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,11 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
# TODO(hinoka): Use logging.
|
|
7
7
|
|
|
8
|
+
from __future__ import print_function
|
|
9
|
+
|
|
8
10
|
import cStringIO
|
|
9
11
|
import codecs
|
|
10
12
|
from contextlib import contextmanager
|
|
11
13
|
import copy
|
|
12
14
|
import ctypes
|
|
15
|
+
from datetime import datetime
|
|
13
16
|
import json
|
|
14
17
|
import optparse
|
|
15
18
|
import os
|
|
@@ -30,6 +33,11 @@ import os.path as path
|
|
|
30
33
|
# How many bytes at a time to read from pipes.
|
|
31
34
|
BUF_SIZE = 256
|
|
32
35
|
|
|
36
|
+
# How many seconds of no stdout activity before process is considered stale. Can
|
|
37
|
+
# be overridden via environmnet variable `STALE_PROCESS_DURATION`. If set to 0,
|
|
38
|
+
# process won't be terminated.
|
|
39
|
+
STALE_PROCESS_DURATION = 1200
|
|
40
|
+
|
|
33
41
|
# Define a bunch of directory paths.
|
|
34
42
|
# Relative to this script's filesystem path.
|
|
35
43
|
THIS_DIR = path.dirname(path.abspath(__file__))
|
|
@@ -78,9 +86,6 @@ cache_dir = r%(cache_dir)s
|
|
|
78
86
|
"""
|
|
79
87
|
|
|
80
88
|
|
|
81
|
-
# How many times to try before giving up.
|
|
82
|
-
ATTEMPTS = 5
|
|
83
|
-
|
|
84
89
|
GIT_CACHE_PATH = path.join(DEPOT_TOOLS_DIR, 'git_cache.py')
|
|
85
90
|
GCLIENT_PATH = path.join(DEPOT_TOOLS_DIR, 'gclient.py')
|
|
86
91
|
|
|
@@ -108,17 +113,34 @@ OK = object()
|
|
|
108
113
|
FAIL = object()
|
|
109
114
|
|
|
110
115
|
|
|
111
|
-
class
|
|
116
|
+
class ProcessObservers(object):
|
|
117
|
+
"""ProcessObservers allows monitoring of child process."""
|
|
118
|
+
|
|
119
|
+
def poke(self):
|
|
120
|
+
"""poke is called when child process sent `BUF_SIZE` data to stdout."""
|
|
121
|
+
pass
|
|
122
|
+
|
|
123
|
+
def cancel(self):
|
|
124
|
+
"""cancel is called once proc exists successfully."""
|
|
125
|
+
pass
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class PsPrinter(ProcessObservers):
|
|
112
129
|
def __init__(self, interval=300):
|
|
113
130
|
self.interval = interval
|
|
114
131
|
self.active = sys.platform.startswith('linux2')
|
|
115
132
|
self.thread = None
|
|
116
133
|
|
|
117
|
-
|
|
118
|
-
def print_pstree():
|
|
134
|
+
def print_pstree(self):
|
|
119
135
|
"""Debugging function used to print "ps auxwwf" for stuck processes."""
|
|
136
|
+
# Add new line for cleaner output
|
|
137
|
+
print()
|
|
120
138
|
subprocess.call(['ps', 'auxwwf'])
|
|
121
139
|
|
|
140
|
+
# Restart timer, we want to continue printing until the process is
|
|
141
|
+
# terminated.
|
|
142
|
+
self.poke()
|
|
143
|
+
|
|
122
144
|
def poke(self):
|
|
123
145
|
if self.active:
|
|
124
146
|
self.cancel()
|
|
@@ -131,6 +153,30 @@ class PsPrinter(object):
|
|
|
131
153
|
self.thread = None
|
|
132
154
|
|
|
133
155
|
|
|
156
|
+
class StaleProcess(ProcessObservers):
|
|
157
|
+
'''StaleProcess terminates process if there is no poke call in `interval`. '''
|
|
158
|
+
|
|
159
|
+
def __init__(self, interval, proc):
|
|
160
|
+
self.interval = interval
|
|
161
|
+
self.proc = proc
|
|
162
|
+
self.thread = None
|
|
163
|
+
|
|
164
|
+
def _terminate_process(self):
|
|
165
|
+
print('Terminating stale process...')
|
|
166
|
+
self.proc.terminate()
|
|
167
|
+
|
|
168
|
+
def poke(self):
|
|
169
|
+
self.cancel()
|
|
170
|
+
if self.interval > 0:
|
|
171
|
+
self.thread = threading.Timer(self.interval, self._terminate_process)
|
|
172
|
+
self.thread.start()
|
|
173
|
+
|
|
174
|
+
def cancel(self):
|
|
175
|
+
if self.thread is not None:
|
|
176
|
+
self.thread.cancel()
|
|
177
|
+
self.thread = None
|
|
178
|
+
|
|
179
|
+
|
|
134
180
|
def call(*args, **kwargs): # pragma: no cover
|
|
135
181
|
"""Interactive subprocess call."""
|
|
136
182
|
kwargs['stdout'] = subprocess.PIPE
|
|
@@ -147,22 +193,25 @@ def call(*args, **kwargs): # pragma: no cover
|
|
|
147
193
|
kwargs['env'] = env
|
|
148
194
|
|
|
149
195
|
if new_env:
|
|
150
|
-
print
|
|
196
|
+
print('===Injecting Environment Variables===')
|
|
151
197
|
for k, v in sorted(new_env.items()):
|
|
152
|
-
print
|
|
153
|
-
print
|
|
154
|
-
print
|
|
198
|
+
print('%s: %s' % (k, v))
|
|
199
|
+
print('%s ===Running %s ===' % (datetime.now(), ' '.join(args),))
|
|
200
|
+
print('In directory: %s' % cwd)
|
|
155
201
|
start_time = time.time()
|
|
156
202
|
proc = subprocess.Popen(args, **kwargs)
|
|
157
203
|
if stdin_data:
|
|
158
204
|
proc.stdin.write(stdin_data)
|
|
159
205
|
proc.stdin.close()
|
|
160
|
-
|
|
206
|
+
stale_process_duration = env.get('STALE_PROCESS_DURATION',
|
|
207
|
+
STALE_PROCESS_DURATION)
|
|
208
|
+
observers = [PsPrinter(), StaleProcess(int(stale_process_duration), proc)]
|
|
161
209
|
# This is here because passing 'sys.stdout' into stdout for proc will
|
|
162
210
|
# produce out of order output.
|
|
163
211
|
hanging_cr = False
|
|
164
212
|
while True:
|
|
165
|
-
|
|
213
|
+
for observer in observers:
|
|
214
|
+
observer.poke()
|
|
166
215
|
buf = proc.stdout.read(BUF_SIZE)
|
|
167
216
|
if not buf:
|
|
168
217
|
break
|
|
@@ -177,20 +226,23 @@ def call(*args, **kwargs): # pragma: no cover
|
|
|
177
226
|
if hanging_cr:
|
|
178
227
|
sys.stdout.write('\n')
|
|
179
228
|
out.write('\n')
|
|
180
|
-
|
|
229
|
+
for observer in observers:
|
|
230
|
+
observer.cancel()
|
|
181
231
|
|
|
182
232
|
code = proc.wait()
|
|
183
233
|
elapsed_time = ((time.time() - start_time) / 60.0)
|
|
184
234
|
outval = out.getvalue()
|
|
185
235
|
if code:
|
|
186
|
-
print
|
|
187
|
-
|
|
236
|
+
print('%s ===Failed in %.1f mins of %s ===' %
|
|
237
|
+
(datetime.now(), elapsed_time, ' '.join(args)))
|
|
238
|
+
print()
|
|
188
239
|
raise SubprocessFailed('%s failed with code %d in %s.' %
|
|
189
240
|
(' '.join(args), code, cwd),
|
|
190
241
|
code, outval)
|
|
191
242
|
|
|
192
|
-
print
|
|
193
|
-
|
|
243
|
+
print('%s ===Succeeded in %.1f mins of %s ===' %
|
|
244
|
+
(datetime.now(), elapsed_time, ' '.join(args)))
|
|
245
|
+
print()
|
|
194
246
|
return outval
|
|
195
247
|
|
|
196
248
|
|
|
@@ -222,36 +274,36 @@ def get_gclient_spec(solutions, target_os, target_os_only, target_cpu,
|
|
|
222
274
|
|
|
223
275
|
def solutions_printer(solutions):
|
|
224
276
|
"""Prints gclient solution to stdout."""
|
|
225
|
-
print
|
|
226
|
-
print
|
|
277
|
+
print('Gclient Solutions')
|
|
278
|
+
print('=================')
|
|
227
279
|
for solution in solutions:
|
|
228
280
|
name = solution.get('name')
|
|
229
281
|
url = solution.get('url')
|
|
230
|
-
print
|
|
282
|
+
print('%s (%s)' % (name, url))
|
|
231
283
|
if solution.get('deps_file'):
|
|
232
|
-
print
|
|
284
|
+
print(' Dependencies file is %s' % solution['deps_file'])
|
|
233
285
|
if 'managed' in solution:
|
|
234
|
-
print
|
|
286
|
+
print(' Managed mode is %s' % ('ON' if solution['managed'] else 'OFF'))
|
|
235
287
|
custom_vars = solution.get('custom_vars')
|
|
236
288
|
if custom_vars:
|
|
237
|
-
print
|
|
238
|
-
for var_name, var_value in sorted(custom_vars.
|
|
239
|
-
print
|
|
289
|
+
print(' Custom Variables:')
|
|
290
|
+
for var_name, var_value in sorted(custom_vars.items()):
|
|
291
|
+
print(' %s = %s' % (var_name, var_value))
|
|
240
292
|
custom_deps = solution.get('custom_deps')
|
|
241
293
|
if 'custom_deps' in solution:
|
|
242
|
-
print
|
|
243
|
-
for deps_name, deps_value in sorted(custom_deps.
|
|
294
|
+
print(' Custom Dependencies:')
|
|
295
|
+
for deps_name, deps_value in sorted(custom_deps.items()):
|
|
244
296
|
if deps_value:
|
|
245
|
-
print
|
|
297
|
+
print(' %s -> %s' % (deps_name, deps_value))
|
|
246
298
|
else:
|
|
247
|
-
print
|
|
248
|
-
for k, v in solution.
|
|
299
|
+
print(' %s: Ignore' % deps_name)
|
|
300
|
+
for k, v in solution.items():
|
|
249
301
|
# Print out all the keys we don't know about.
|
|
250
302
|
if k in ['name', 'url', 'deps_file', 'custom_vars', 'custom_deps',
|
|
251
303
|
'managed']:
|
|
252
304
|
continue
|
|
253
|
-
print
|
|
254
|
-
print
|
|
305
|
+
print(' %s is %s' % (k, v))
|
|
306
|
+
print()
|
|
255
307
|
|
|
256
308
|
|
|
257
309
|
def modify_solutions(input_solutions):
|
|
@@ -270,8 +322,8 @@ def modify_solutions(input_solutions):
|
|
|
270
322
|
# We don't want gclient to be using a safesync URL. Instead it should
|
|
271
323
|
# using the lkgr/lkcr branch/tags.
|
|
272
324
|
if 'safesync_url' in solution:
|
|
273
|
-
print
|
|
274
|
-
parsed_path)
|
|
325
|
+
print('Removing safesync url %s from %s' % (solution['safesync_url'],
|
|
326
|
+
parsed_path))
|
|
275
327
|
del solution['safesync_url']
|
|
276
328
|
|
|
277
329
|
return solutions
|
|
@@ -283,11 +335,11 @@ def remove(target, cleanup_dir):
|
|
|
283
335
|
os.makedirs(cleanup_dir)
|
|
284
336
|
dest = path.join(cleanup_dir, '%s_%s' % (
|
|
285
337
|
path.basename(target), uuid.uuid4().hex))
|
|
286
|
-
print
|
|
338
|
+
print('Marking for removal %s => %s' % (target, dest))
|
|
287
339
|
try:
|
|
288
340
|
os.rename(target, dest)
|
|
289
341
|
except Exception as e:
|
|
290
|
-
print
|
|
342
|
+
print('Error renaming %s to %s: %s' % (target, dest, str(e)))
|
|
291
343
|
raise
|
|
292
344
|
|
|
293
345
|
|
|
@@ -299,9 +351,9 @@ def ensure_no_checkout(dir_names, cleanup_dir):
|
|
|
299
351
|
if has_checkout:
|
|
300
352
|
for filename in os.listdir(build_dir):
|
|
301
353
|
deletion_target = path.join(build_dir, filename)
|
|
302
|
-
print
|
|
354
|
+
print('.git detected in checkout, deleting %s...' % deletion_target,)
|
|
303
355
|
remove(deletion_target, cleanup_dir)
|
|
304
|
-
print
|
|
356
|
+
print('done')
|
|
305
357
|
|
|
306
358
|
|
|
307
359
|
def call_gclient(*args, **kwargs):
|
|
@@ -313,6 +365,8 @@ def call_gclient(*args, **kwargs):
|
|
|
313
365
|
"""
|
|
314
366
|
cmd = [sys.executable, '-u', GCLIENT_PATH]
|
|
315
367
|
cmd.extend(args)
|
|
368
|
+
# Disable metrics collection on bots, since it's not supported anyway.
|
|
369
|
+
kwargs.setdefault('env', {})['DEPOT_TOOLS_METRICS'] = '0'
|
|
316
370
|
return call(*cmd, **kwargs)
|
|
317
371
|
|
|
318
372
|
|
|
@@ -361,7 +415,7 @@ def gclient_sync(
|
|
|
361
415
|
args += ['--break_repo_locks']
|
|
362
416
|
if disable_syntax_validation:
|
|
363
417
|
args += ['--disable-syntax-validation']
|
|
364
|
-
for name, revision in sorted(revisions.
|
|
418
|
+
for name, revision in sorted(revisions.items()):
|
|
365
419
|
if revision.upper() == 'HEAD':
|
|
366
420
|
revision = 'origin/master'
|
|
367
421
|
args.extend(['--revision', '%s@%s' % (name, revision)])
|
|
@@ -430,13 +484,13 @@ def create_manifest_old():
|
|
|
430
484
|
'revision': match.group(3),
|
|
431
485
|
}
|
|
432
486
|
else:
|
|
433
|
-
print
|
|
487
|
+
print("WARNING: Couldn't match revinfo line:\n%s" % line)
|
|
434
488
|
return manifest
|
|
435
489
|
|
|
436
490
|
|
|
437
491
|
# TODO(hinoka): Include patch revision.
|
|
438
492
|
def create_manifest(gclient_output, patch_root):
|
|
439
|
-
"""Return the JSONPB
|
|
493
|
+
"""Return the JSONPB equivalent of the source manifest proto.
|
|
440
494
|
|
|
441
495
|
The source manifest proto is defined here:
|
|
442
496
|
https://chromium.googlesource.com/infra/luci/recipes-py/+/master/recipe_engine/source_manifest.proto
|
|
@@ -454,7 +508,7 @@ def create_manifest(gclient_output, patch_root):
|
|
|
454
508
|
dirs = {}
|
|
455
509
|
if patch_root:
|
|
456
510
|
patch_root = patch_root.strip('/') # Normalize directory names.
|
|
457
|
-
for directory, info in gclient_output.get('solutions', {}).
|
|
511
|
+
for directory, info in gclient_output.get('solutions', {}).items():
|
|
458
512
|
directory = directory.strip('/') # Normalize the directory name.
|
|
459
513
|
# The format of the url is "https://repo.url/blah.git@abcdefabcdef" or
|
|
460
514
|
# just "https://repo.url/blah.git"
|
|
@@ -615,11 +669,11 @@ def _maybe_break_locks(checkout_path, tries=3):
|
|
|
615
669
|
for filename in filenames:
|
|
616
670
|
if filename.endswith('.lock'):
|
|
617
671
|
to_break = os.path.join(dirpath, filename)
|
|
618
|
-
print
|
|
672
|
+
print('breaking lock: %s' % to_break)
|
|
619
673
|
try:
|
|
620
674
|
os.remove(to_break)
|
|
621
675
|
except OSError as ex:
|
|
622
|
-
print
|
|
676
|
+
print('FAILED to break lock: %s: %s' % (to_break, ex))
|
|
623
677
|
raise
|
|
624
678
|
|
|
625
679
|
for _ in xrange(tries):
|
|
@@ -631,12 +685,14 @@ def _maybe_break_locks(checkout_path, tries=3):
|
|
|
631
685
|
|
|
632
686
|
|
|
633
687
|
|
|
634
|
-
def git_checkouts(solutions, revisions, refs, git_cache_dir,
|
|
688
|
+
def git_checkouts(solutions, revisions, refs, no_fetch_tags, git_cache_dir,
|
|
689
|
+
cleanup_dir):
|
|
635
690
|
build_dir = os.getcwd()
|
|
636
691
|
first_solution = True
|
|
637
692
|
for sln in solutions:
|
|
638
693
|
sln_dir = path.join(build_dir, sln['name'])
|
|
639
|
-
_git_checkout(sln, sln_dir, revisions, refs, git_cache_dir,
|
|
694
|
+
_git_checkout(sln, sln_dir, revisions, refs, no_fetch_tags, git_cache_dir,
|
|
695
|
+
cleanup_dir)
|
|
640
696
|
if first_solution:
|
|
641
697
|
git_ref = git('log', '--format=%H', '--max-count=1',
|
|
642
698
|
cwd=path.join(build_dir, sln['name'])
|
|
@@ -645,11 +701,14 @@ def git_checkouts(solutions, revisions, refs, git_cache_dir, cleanup_dir):
|
|
|
645
701
|
return git_ref
|
|
646
702
|
|
|
647
703
|
|
|
648
|
-
def _git_checkout(sln, sln_dir, revisions, refs, git_cache_dir,
|
|
704
|
+
def _git_checkout(sln, sln_dir, revisions, refs, no_fetch_tags, git_cache_dir,
|
|
705
|
+
cleanup_dir):
|
|
649
706
|
name = sln['name']
|
|
650
707
|
url = sln['url']
|
|
651
708
|
populate_cmd = (['cache', 'populate', '--ignore_locks', '-v',
|
|
652
709
|
'--cache-dir', git_cache_dir, url, '--reset-fetch-config'])
|
|
710
|
+
if no_fetch_tags:
|
|
711
|
+
populate_cmd.extend(['--no-fetch-tags'])
|
|
653
712
|
for ref in refs:
|
|
654
713
|
populate_cmd.extend(['--ref', ref])
|
|
655
714
|
|
|
@@ -686,14 +745,14 @@ def _git_checkout(sln, sln_dir, revisions, refs, git_cache_dir, cleanup_dir):
|
|
|
686
745
|
# Only kick in deadline after second attempt to ensure we retry at least
|
|
687
746
|
# once after initial fetch from not-yet-replicated server.
|
|
688
747
|
if attempt >= 2 and overrun > 0:
|
|
689
|
-
print
|
|
748
|
+
print('Ran %s seconds past deadline. Aborting.' % (overrun,))
|
|
690
749
|
# TODO(tandrii): raise exception immediately here, instead of doing
|
|
691
750
|
# useless step 2 trying to fetch something that we know doesn't exist
|
|
692
751
|
# in cache **after production data gives us confidence to do so**.
|
|
693
752
|
break
|
|
694
753
|
|
|
695
754
|
sleep_secs = min(60, 2**attempt)
|
|
696
|
-
print
|
|
755
|
+
print('waiting %s seconds and trying to fetch again...' % sleep_secs)
|
|
697
756
|
time.sleep(sleep_secs)
|
|
698
757
|
|
|
699
758
|
# Step 2: populate a checkout from local cache. All operations are local.
|
|
@@ -705,13 +764,15 @@ def _git_checkout(sln, sln_dir, revisions, refs, git_cache_dir, cleanup_dir):
|
|
|
705
764
|
# If repo deletion was aborted midway, it may have left .git in broken
|
|
706
765
|
# state.
|
|
707
766
|
if path.exists(sln_dir) and is_broken_repo_dir(sln_dir):
|
|
708
|
-
print
|
|
767
|
+
print('Git repo %s appears to be broken, removing it' % sln_dir)
|
|
709
768
|
remove(sln_dir, cleanup_dir)
|
|
710
769
|
|
|
711
770
|
# Use "tries=1", since we retry manually in this loop.
|
|
712
771
|
if not path.isdir(sln_dir):
|
|
713
772
|
git('clone', '--no-checkout', '--local', '--shared', mirror_dir,
|
|
714
773
|
sln_dir)
|
|
774
|
+
# Detach HEAD to be consistent with the non-clone case
|
|
775
|
+
git('checkout', 'master', '--detach', cwd=sln_dir)
|
|
715
776
|
_git_disable_gc(sln_dir)
|
|
716
777
|
else:
|
|
717
778
|
_git_disable_gc(sln_dir)
|
|
@@ -732,8 +793,8 @@ def _git_checkout(sln, sln_dir, revisions, refs, git_cache_dir, cleanup_dir):
|
|
|
732
793
|
git('clean', '-dff', cwd=sln_dir)
|
|
733
794
|
return
|
|
734
795
|
except SubprocessFailed as e:
|
|
735
|
-
# Exited abnormally,
|
|
736
|
-
print
|
|
796
|
+
# Exited abnormally, there's probably something wrong.
|
|
797
|
+
print('Something failed: %s.' % str(e))
|
|
737
798
|
if first_try:
|
|
738
799
|
first_try = False
|
|
739
800
|
# Lets wipe the checkout and try again.
|
|
@@ -747,16 +808,6 @@ def _git_disable_gc(cwd):
|
|
|
747
808
|
git('config', 'gc.autopacklimit', '0', cwd=cwd)
|
|
748
809
|
|
|
749
810
|
|
|
750
|
-
def _download(url):
|
|
751
|
-
"""Fetch url and return content, with retries for flake."""
|
|
752
|
-
for attempt in xrange(ATTEMPTS):
|
|
753
|
-
try:
|
|
754
|
-
return urllib2.urlopen(url).read()
|
|
755
|
-
except Exception:
|
|
756
|
-
if attempt == ATTEMPTS - 1:
|
|
757
|
-
raise
|
|
758
|
-
|
|
759
|
-
|
|
760
811
|
def get_commit_position(git_path, revision='HEAD'):
|
|
761
812
|
"""Dumps the 'git' log for a specific revision and parses out the commit
|
|
762
813
|
position.
|
|
@@ -781,9 +832,9 @@ def parse_got_revision(gclient_output, got_revision_mapping):
|
|
|
781
832
|
solutions_output = {
|
|
782
833
|
# Make sure path always ends with a single slash.
|
|
783
834
|
'%s/' % path.rstrip('/') : solution_output for path, solution_output
|
|
784
|
-
in gclient_output['solutions'].
|
|
835
|
+
in gclient_output['solutions'].items()
|
|
785
836
|
}
|
|
786
|
-
for property_name, dir_name in got_revision_mapping.
|
|
837
|
+
for property_name, dir_name in got_revision_mapping.items():
|
|
787
838
|
# Make sure dir_name always ends with a single slash.
|
|
788
839
|
dir_name = '%s/' % dir_name.rstrip('/')
|
|
789
840
|
if dir_name not in solutions_output:
|
|
@@ -816,15 +867,16 @@ def emit_json(out_file, did_run, gclient_output=None, **kwargs):
|
|
|
816
867
|
|
|
817
868
|
|
|
818
869
|
def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only,
|
|
819
|
-
target_cpu, patch_root, patch_refs,
|
|
820
|
-
|
|
821
|
-
|
|
870
|
+
target_cpu, patch_root, patch_refs, gerrit_rebase_patch_ref,
|
|
871
|
+
no_fetch_tags, refs, git_cache_dir, cleanup_dir,
|
|
872
|
+
gerrit_reset, disable_syntax_validation):
|
|
822
873
|
# Get a checkout of each solution, without DEPS or hooks.
|
|
823
874
|
# Calling git directly because there is no way to run Gclient without
|
|
824
875
|
# invoking DEPS.
|
|
825
|
-
print
|
|
876
|
+
print('Fetching Git checkout')
|
|
826
877
|
|
|
827
|
-
git_checkouts(solutions, revisions, refs, git_cache_dir,
|
|
878
|
+
git_checkouts(solutions, revisions, refs, no_fetch_tags, git_cache_dir,
|
|
879
|
+
cleanup_dir)
|
|
828
880
|
|
|
829
881
|
# Ensure our build/ directory is set up with the correct .gclient file.
|
|
830
882
|
gclient_configure(solutions, target_os, target_os_only, target_cpu,
|
|
@@ -836,7 +888,7 @@ def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only,
|
|
|
836
888
|
# We want to pass all non-solution revisions into the gclient sync call.
|
|
837
889
|
solution_dirs = {sln['name'] for sln in solutions}
|
|
838
890
|
gc_revisions = {
|
|
839
|
-
dirname: rev for dirname, rev in revisions.
|
|
891
|
+
dirname: rev for dirname, rev in revisions.items()
|
|
840
892
|
if dirname not in solution_dirs}
|
|
841
893
|
# Gclient sometimes ignores "unmanaged": "False" in the gclient solution
|
|
842
894
|
# if --revision <anything> is passed (for example, for subrepos).
|
|
@@ -844,20 +896,20 @@ def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only,
|
|
|
844
896
|
for solution_name in list(solution_dirs):
|
|
845
897
|
gc_revisions[solution_name] = 'unmanaged'
|
|
846
898
|
|
|
847
|
-
with git_config_if_not_set('user.name', 'chrome-bot')
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
899
|
+
with git_config_if_not_set('user.name', 'chrome-bot'), \
|
|
900
|
+
git_config_if_not_set('user.email', 'chrome-bot@chromium.org'):
|
|
901
|
+
# Let gclient do the DEPS syncing.
|
|
902
|
+
# The branch-head refspec is a special case because it's possible Chrome
|
|
903
|
+
# src, which contains the branch-head refspecs, is DEPSed in.
|
|
904
|
+
gclient_output = gclient_sync(
|
|
905
|
+
BRANCH_HEADS_REFSPEC in refs,
|
|
906
|
+
TAGS_REFSPEC in refs,
|
|
907
|
+
gc_revisions,
|
|
908
|
+
break_repo_locks,
|
|
909
|
+
disable_syntax_validation,
|
|
910
|
+
patch_refs,
|
|
911
|
+
gerrit_reset,
|
|
912
|
+
gerrit_rebase_patch_ref)
|
|
861
913
|
|
|
862
914
|
# Now that gclient_sync has finished, we should revert any .DEPS.git so that
|
|
863
915
|
# presubmit doesn't complain about it being modified.
|
|
@@ -901,7 +953,7 @@ def parse_revisions(revisions, root):
|
|
|
901
953
|
if not normalized_root.endswith('.git'):
|
|
902
954
|
normalized_root += '.git'
|
|
903
955
|
elif parsed_root.scheme:
|
|
904
|
-
print
|
|
956
|
+
print('WARNING: Unrecognized scheme %s, ignoring' % parsed_root.scheme)
|
|
905
957
|
continue
|
|
906
958
|
else:
|
|
907
959
|
# This is probably a local path.
|
|
@@ -934,6 +986,12 @@ def parse_args():
|
|
|
934
986
|
'Can prepend root@<rev> to specify which repository, '
|
|
935
987
|
'where root is either a filesystem path or git https '
|
|
936
988
|
'url. To specify Tip of Tree, set rev to HEAD. ')
|
|
989
|
+
parse.add_option(
|
|
990
|
+
'--no_fetch_tags',
|
|
991
|
+
action='store_true',
|
|
992
|
+
help=('Don\'t fetch tags from the server for the git checkout. '
|
|
993
|
+
'This can speed up fetch considerably when '
|
|
994
|
+
'there are many tags.'))
|
|
937
995
|
# TODO(machenbach): Remove the flag when all uses have been removed.
|
|
938
996
|
parse.add_option('--output_manifest', action='store_true',
|
|
939
997
|
help=('Deprecated.'))
|
|
@@ -990,10 +1048,9 @@ def parse_args():
|
|
|
990
1048
|
with open(options.revision_mapping_file, 'r') as f:
|
|
991
1049
|
options.revision_mapping = json.load(f)
|
|
992
1050
|
except Exception as e:
|
|
993
|
-
print
|
|
994
|
-
'WARNING: Caught
|
|
995
|
-
% (str(e),)
|
|
996
|
-
)
|
|
1051
|
+
print(
|
|
1052
|
+
'WARNING: Caught exception while parsing revision_mapping*: %s'
|
|
1053
|
+
% (str(e),))
|
|
997
1054
|
|
|
998
1055
|
# Because we print CACHE_DIR out into a .gclient file, and then later run
|
|
999
1056
|
# eval() on it, backslashes need to be escaped, otherwise "E:\b\build" gets
|
|
@@ -1024,26 +1081,36 @@ def prepare(options, git_slns, active):
|
|
|
1024
1081
|
first_sln = dir_names[0]
|
|
1025
1082
|
|
|
1026
1083
|
# Split all the revision specifications into a nice dict.
|
|
1027
|
-
print
|
|
1084
|
+
print('Revisions: %s' % options.revision)
|
|
1028
1085
|
revisions = parse_revisions(options.revision, first_sln)
|
|
1029
|
-
print
|
|
1086
|
+
print('Fetching Git checkout at %s@%s' % (first_sln, revisions[first_sln]))
|
|
1030
1087
|
return revisions, step_text
|
|
1031
1088
|
|
|
1032
1089
|
|
|
1033
1090
|
def checkout(options, git_slns, specs, revisions, step_text):
|
|
1034
|
-
print
|
|
1035
|
-
print
|
|
1091
|
+
print('Using Python version: %s' % (sys.version,))
|
|
1092
|
+
print('Checking git version...')
|
|
1036
1093
|
ver = git('version').strip()
|
|
1037
|
-
print
|
|
1094
|
+
print('Using %s' % ver)
|
|
1038
1095
|
|
|
1039
1096
|
try:
|
|
1040
1097
|
protocol = git('config', '--get', 'protocol.version')
|
|
1041
|
-
print
|
|
1098
|
+
print('Using git protocol version %s' % protocol)
|
|
1042
1099
|
except SubprocessFailed as e:
|
|
1043
|
-
print
|
|
1100
|
+
print('git protocol version is not specified.')
|
|
1044
1101
|
|
|
1045
1102
|
first_sln = git_slns[0]['name']
|
|
1046
1103
|
dir_names = [sln.get('name') for sln in git_slns if 'name' in sln]
|
|
1104
|
+
dirty_path = '.dirty_bot_checkout'
|
|
1105
|
+
if os.path.exists(dirty_path):
|
|
1106
|
+
ensure_no_checkout(dir_names, options.cleanup_dir)
|
|
1107
|
+
|
|
1108
|
+
with open(dirty_path, 'w') as f:
|
|
1109
|
+
# create file, no content
|
|
1110
|
+
pass
|
|
1111
|
+
|
|
1112
|
+
should_delete_dirty_file = False
|
|
1113
|
+
|
|
1047
1114
|
try:
|
|
1048
1115
|
# Outer try is for catching patch failures and exiting gracefully.
|
|
1049
1116
|
# Inner try is for catching gclient failures and retrying gracefully.
|
|
@@ -1066,6 +1133,9 @@ def checkout(options, git_slns, specs, revisions, step_text):
|
|
|
1066
1133
|
patch_refs=options.patch_refs,
|
|
1067
1134
|
gerrit_rebase_patch_ref=not options.gerrit_no_rebase_patch_ref,
|
|
1068
1135
|
|
|
1136
|
+
# Control how the fetch step will occur.
|
|
1137
|
+
no_fetch_tags=options.no_fetch_tags,
|
|
1138
|
+
|
|
1069
1139
|
# Finally, extra configurations cleanup dir location.
|
|
1070
1140
|
refs=options.refs,
|
|
1071
1141
|
git_cache_dir=options.git_cache_dir,
|
|
@@ -1073,10 +1143,12 @@ def checkout(options, git_slns, specs, revisions, step_text):
|
|
|
1073
1143
|
gerrit_reset=not options.gerrit_no_reset,
|
|
1074
1144
|
disable_syntax_validation=options.disable_syntax_validation)
|
|
1075
1145
|
gclient_output = ensure_checkout(**checkout_parameters)
|
|
1146
|
+
should_delete_dirty_file = True
|
|
1076
1147
|
except GclientSyncFailed:
|
|
1077
|
-
print
|
|
1148
|
+
print('We failed gclient sync, lets delete the checkout and retry.')
|
|
1078
1149
|
ensure_no_checkout(dir_names, options.cleanup_dir)
|
|
1079
1150
|
gclient_output = ensure_checkout(**checkout_parameters)
|
|
1151
|
+
should_delete_dirty_file = True
|
|
1080
1152
|
except PatchFailed as e:
|
|
1081
1153
|
# Tell recipes information such as root, got_revision, etc.
|
|
1082
1154
|
emit_json(options.output_json,
|
|
@@ -1088,7 +1160,15 @@ def checkout(options, git_slns, specs, revisions, step_text):
|
|
|
1088
1160
|
failed_patch_body=e.output,
|
|
1089
1161
|
step_text='%s PATCH FAILED' % step_text,
|
|
1090
1162
|
fixed_revisions=revisions)
|
|
1163
|
+
should_delete_dirty_file = True
|
|
1091
1164
|
raise
|
|
1165
|
+
finally:
|
|
1166
|
+
if should_delete_dirty_file:
|
|
1167
|
+
try:
|
|
1168
|
+
os.remove(dirty_path)
|
|
1169
|
+
except OSError:
|
|
1170
|
+
print('Dirty file %s has been removed by a different process.' %
|
|
1171
|
+
dirty_path)
|
|
1092
1172
|
|
|
1093
1173
|
# Take care of got_revisions outputs.
|
|
1094
1174
|
revision_mapping = GOT_REVISION_MAPPINGS.get(git_slns[0]['url'], {})
|
|
@@ -1124,14 +1204,14 @@ def checkout(options, git_slns, specs, revisions, step_text):
|
|
|
1124
1204
|
|
|
1125
1205
|
|
|
1126
1206
|
def print_debug_info():
|
|
1127
|
-
print
|
|
1207
|
+
print("Debugging info:")
|
|
1128
1208
|
debug_params = {
|
|
1129
1209
|
'CURRENT_DIR': path.abspath(os.getcwd()),
|
|
1130
1210
|
'THIS_DIR': THIS_DIR,
|
|
1131
1211
|
'DEPOT_TOOLS_DIR': DEPOT_TOOLS_DIR,
|
|
1132
1212
|
}
|
|
1133
|
-
for k, v in sorted(debug_params.
|
|
1134
|
-
print
|
|
1213
|
+
for k, v in sorted(debug_params.items()):
|
|
1214
|
+
print("%s: %r" % (k, v))
|
|
1135
1215
|
|
|
1136
1216
|
|
|
1137
1217
|
def main():
|
|
@@ -1141,7 +1221,7 @@ def main():
|
|
|
1141
1221
|
# Check if this script should activate or not.
|
|
1142
1222
|
active = True
|
|
1143
1223
|
|
|
1144
|
-
# Print a helpful message to tell developers
|
|
1224
|
+
# Print a helpful message to tell developers what's going on with this step.
|
|
1145
1225
|
print_debug_info()
|
|
1146
1226
|
|
|
1147
1227
|
# Parse, manipulate, and print the gclient solutions.
|
|
@@ -1152,21 +1232,14 @@ def main():
|
|
|
1152
1232
|
|
|
1153
1233
|
solutions_printer(git_slns)
|
|
1154
1234
|
|
|
1155
|
-
# Creating hardlinks during a build can interact with git reset in
|
|
1156
|
-
# unfortunate ways if git's index isn't refreshed beforehand. (See
|
|
1157
|
-
# crbug.com/330461#c13 for an explanation.)
|
|
1158
|
-
try:
|
|
1159
|
-
call_gclient('recurse', '-v', 'git', 'update-index', '--refresh')
|
|
1160
|
-
except SubprocessFailed:
|
|
1161
|
-
# Failure here (and nowhere else) may have adverse effects on the
|
|
1162
|
-
# compile time of the build but shouldn't affect its ability to
|
|
1163
|
-
# successfully complete.
|
|
1164
|
-
print 'WARNING: Failed to update git indices.'
|
|
1165
|
-
|
|
1166
1235
|
try:
|
|
1167
1236
|
# Dun dun dun, the main part of bot_update.
|
|
1168
|
-
|
|
1169
|
-
|
|
1237
|
+
# gn creates hardlinks during the build. By default, this makes
|
|
1238
|
+
# `git reset` overwrite the sources of the hardlinks, which causes
|
|
1239
|
+
# unnecessary rebuilds. (See crbug.com/330461#c13 for an explanation.)
|
|
1240
|
+
with git_config_if_not_set('core.trustctime', 'false'):
|
|
1241
|
+
revisions, step_text = prepare(options, git_slns, active)
|
|
1242
|
+
checkout(options, git_slns, specs, revisions, step_text)
|
|
1170
1243
|
|
|
1171
1244
|
except PatchFailed as e:
|
|
1172
1245
|
# Return a specific non-zero exit code for patch failure (because it is
|