libv8 6.7.288.46.1 → 7.3.492.27.0beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/CHANGELOG.md +4 -0
- data/README.md +2 -0
- data/ext/libv8/builder.rb +6 -2
- data/lib/libv8/version.rb +1 -1
- data/vendor/depot_tools/.gitattributes +1 -0
- data/vendor/depot_tools/.gitignore +7 -0
- data/vendor/depot_tools/CROS_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +12 -1
- data/vendor/depot_tools/PRESUBMIT.py +16 -9
- data/vendor/depot_tools/README.md +9 -2
- data/vendor/depot_tools/autoninja +14 -6
- data/vendor/depot_tools/autoninja.bat +11 -1
- data/vendor/depot_tools/autoninja.py +40 -18
- data/vendor/depot_tools/bb +12 -0
- data/vendor/depot_tools/bb.bat +7 -0
- data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
- data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
- data/vendor/depot_tools/bootstrap/win/win_tools.py +2 -1
- data/vendor/depot_tools/buildbucket.py +57 -4
- data/vendor/depot_tools/cipd +157 -44
- data/vendor/depot_tools/cipd.bat +51 -14
- data/vendor/depot_tools/cipd.ps1 +104 -42
- data/vendor/depot_tools/cipd_client_version +1 -1
- data/vendor/depot_tools/cipd_client_version.digests +21 -0
- data/vendor/depot_tools/cipd_manifest.txt +19 -6
- data/vendor/depot_tools/cipd_manifest.versions +318 -0
- data/vendor/depot_tools/clang_format.py +4 -4
- data/vendor/depot_tools/cpplint.py +44 -199
- data/vendor/depot_tools/dart_format.py +2 -2
- data/vendor/depot_tools/detect_host_arch.py +8 -3
- data/vendor/depot_tools/download_from_google_storage.py +47 -39
- data/vendor/depot_tools/fetch.py +30 -18
- data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
- data/vendor/depot_tools/fetch_configs/chromium.py +18 -1
- data/vendor/depot_tools/fetch_configs/config_util.py +4 -2
- data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
- data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
- data/vendor/depot_tools/fix_encoding.py +3 -3
- data/vendor/depot_tools/gclient +1 -1
- data/vendor/depot_tools/gclient.py +415 -198
- data/vendor/depot_tools/gclient_eval.py +220 -171
- data/vendor/depot_tools/gclient_paths.py +142 -0
- data/vendor/depot_tools/gclient_scm.py +200 -51
- data/vendor/depot_tools/gclient_utils.py +88 -191
- data/vendor/depot_tools/gerrit_client.py +13 -0
- data/vendor/depot_tools/gerrit_util.py +158 -23
- data/vendor/depot_tools/git-nav-upstream +1 -1
- data/vendor/depot_tools/git_cache.py +77 -24
- data/vendor/depot_tools/git_cl.py +705 -1099
- data/vendor/depot_tools/git_common.py +9 -6
- data/vendor/depot_tools/git_map_branches.py +19 -2
- data/vendor/depot_tools/git_nav_downstream.py +3 -4
- data/vendor/depot_tools/git_rebase_update.py +14 -0
- data/vendor/depot_tools/git_reparent_branch.py +8 -2
- data/vendor/depot_tools/gn.py +38 -3
- data/vendor/depot_tools/gsutil.py +8 -3
- data/vendor/depot_tools/gsutil.py.bat +15 -0
- data/vendor/depot_tools/gsutil.vpython +16 -0
- data/vendor/depot_tools/infra/config/OWNERS +0 -1
- data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
- data/vendor/depot_tools/lucicfg +12 -0
- data/vendor/depot_tools/lucicfg.bat +7 -0
- data/vendor/depot_tools/man/html/git-map-branches.html +34 -2
- data/vendor/depot_tools/man/html/git-new-branch.html +40 -32
- data/vendor/depot_tools/man/man1/git-map-branches.1 +24 -5
- data/vendor/depot_tools/man/man1/git-new-branch.1 +35 -27
- data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +1 -0
- data/vendor/depot_tools/man/src/git-map-branches.txt +10 -0
- data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +9 -4
- data/vendor/depot_tools/man/src/git-new-branch.txt +1 -1
- data/vendor/depot_tools/metrics.README.md +98 -0
- data/vendor/depot_tools/metrics.py +296 -0
- data/vendor/depot_tools/metrics_utils.py +303 -0
- data/vendor/depot_tools/my_activity.py +91 -29
- data/vendor/depot_tools/ninja +1 -1
- data/vendor/depot_tools/ninjalog.README.md +64 -0
- data/vendor/depot_tools/ninjalog_uploader.py +232 -0
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +116 -0
- data/vendor/depot_tools/owners.py +30 -13
- data/vendor/depot_tools/owners_finder.py +5 -2
- data/vendor/depot_tools/presubmit_canned_checks.py +188 -29
- data/vendor/depot_tools/presubmit_support.py +18 -41
- data/vendor/depot_tools/pylintrc +23 -19
- data/vendor/depot_tools/recipes/OWNERS +2 -0
- data/vendor/depot_tools/recipes/README.recipes.md +344 -151
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +2 -16
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +141 -99
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +5 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +5 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +6 -98
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +45 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob.json → input_commit_with_id_without_repo.json} +6 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob_empty_revision.json → multiple_patch_refs.json} +8 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +19 -29
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{trychange.json → refs.json} +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +51 -6
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +50 -6
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +51 -6
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +17 -25
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +17 -25
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +18 -26
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +18 -26
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +26 -28
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +45 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +17 -25
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +13 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name.json +13 -152
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +4 -9
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +185 -202
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +52 -157
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +5 -14
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +34 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +14 -2
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +7 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +9 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +9 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +9 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +13 -8
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +18 -12
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +18 -12
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +18 -12
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +3 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +58 -46
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +65 -22
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +20 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +5 -2
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +62 -14
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +24 -38
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +56 -50
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +15 -9
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +4 -1
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +34 -22
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +222 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +224 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +10 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +5 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +5 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +10 -5
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +8 -9
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +12 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +5 -6
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +27 -11
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +12 -13
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +120 -5
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +45 -3
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +25 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +56 -4
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +6 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +24 -13
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +13 -14
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +2 -3
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +1 -2
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +35 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +116 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +82 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +23 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +2 -7
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +7 -6
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +117 -8
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +4 -5
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +7 -4
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +98 -7
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +147 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +8 -5
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +8 -5
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +9 -6
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +9 -6
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +27 -2
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +107 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +26 -0
- data/vendor/depot_tools/recipes/recipes.py +37 -27
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +7 -10
- data/vendor/depot_tools/repo +34 -8
- data/vendor/depot_tools/roll_dep.py +52 -49
- data/vendor/depot_tools/scm.py +38 -23
- data/vendor/depot_tools/setup_color.py +4 -2
- data/vendor/depot_tools/split_cl.py +32 -4
- data/vendor/depot_tools/subprocess2.py +22 -4
- data/vendor/depot_tools/third_party/httplib2/README.chromium +2 -2
- data/vendor/depot_tools/third_party/httplib2/__init__.py +242 -158
- data/vendor/depot_tools/third_party/httplib2/cacerts.txt +57 -44
- data/vendor/depot_tools/third_party/httplib2/socks.py +15 -5
- data/vendor/depot_tools/third_party/logilab/README.chromium +2 -4
- data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +2 -1
- data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +10 -5
- data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +5 -5
- data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +233 -0
- data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +82 -33
- data/vendor/depot_tools/third_party/logilab/astroid/bases.py +137 -153
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{builtin_inference.py → brain_builtin_inference.py} +117 -26
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +15 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2gi.py → brain_gi.py} +48 -8
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2mechanize.py → brain_mechanize.py} +0 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{pynose.py → brain_nose.py} +4 -1
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +62 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +76 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +44 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/{pysix_moves.py → brain_six.py} +28 -1
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +65 -0
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +473 -0
- data/vendor/depot_tools/third_party/logilab/astroid/builder.py +104 -81
- data/vendor/depot_tools/third_party/logilab/astroid/context.py +81 -0
- data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +75 -0
- data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +20 -0
- data/vendor/depot_tools/third_party/logilab/astroid/inference.py +137 -183
- data/vendor/depot_tools/third_party/logilab/astroid/manager.py +45 -169
- data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +37 -14
- data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +112 -41
- data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +243 -156
- data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +35 -22
- data/vendor/depot_tools/third_party/logilab/astroid/objects.py +186 -0
- data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +157 -102
- data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +32 -8
- data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +372 -309
- data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +652 -420
- data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +4 -21
- data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +96 -0
- data/vendor/depot_tools/third_party/logilab/astroid/util.py +89 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +19 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +11 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +20 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +1421 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +9 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +246 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +414 -0
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +13 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +24 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +11 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +19 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +2729 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +96 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +512 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +228 -0
- data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +901 -0
- data/vendor/depot_tools/third_party/pylint/README.chromium +2 -25
- data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +13 -3
- data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +1 -2
- data/vendor/depot_tools/third_party/pylint/checkers/async.py +82 -0
- data/vendor/depot_tools/third_party/pylint/checkers/base.py +893 -119
- data/vendor/depot_tools/third_party/pylint/checkers/classes.py +342 -204
- data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +51 -34
- data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +84 -47
- data/vendor/depot_tools/third_party/pylint/checkers/format.py +55 -30
- data/vendor/depot_tools/third_party/pylint/checkers/imports.py +314 -73
- data/vendor/depot_tools/third_party/pylint/checkers/logging.py +10 -8
- data/vendor/depot_tools/third_party/pylint/checkers/misc.py +2 -1
- data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +45 -48
- data/vendor/depot_tools/third_party/pylint/checkers/python3.py +31 -21
- data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +3 -3
- data/vendor/depot_tools/third_party/pylint/checkers/similar.py +4 -5
- data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +24 -10
- data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +120 -56
- data/vendor/depot_tools/third_party/pylint/checkers/strings.py +38 -35
- data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +485 -138
- data/vendor/depot_tools/third_party/pylint/checkers/utils.py +319 -142
- data/vendor/depot_tools/third_party/pylint/checkers/variables.py +329 -207
- data/vendor/depot_tools/third_party/pylint/config.py +739 -76
- data/vendor/depot_tools/third_party/pylint/epylint.py +9 -5
- data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +311 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +62 -0
- data/vendor/depot_tools/third_party/{logilab/common → pylint}/graph.py +30 -133
- data/vendor/depot_tools/third_party/pylint/gui.py +2 -2
- data/vendor/depot_tools/third_party/pylint/interfaces.py +21 -3
- data/vendor/depot_tools/third_party/pylint/lint.py +123 -140
- data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +10 -13
- data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +15 -4
- data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +372 -0
- data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +30 -7
- data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +80 -2
- data/vendor/depot_tools/third_party/{logilab/common → pylint/pyreverse}/vcgutils.py +19 -37
- data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +3 -4
- data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +34 -18
- data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +1 -1
- data/vendor/depot_tools/third_party/pylint/reporters/html.py +10 -3
- data/vendor/depot_tools/third_party/pylint/reporters/json.py +10 -4
- data/vendor/depot_tools/third_party/pylint/reporters/text.py +94 -3
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +106 -0
- data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/html_writer.py +17 -57
- data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/nodes.py +52 -74
- data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/text_writer.py +14 -60
- data/vendor/depot_tools/third_party/pylint/testutils.py +22 -20
- data/vendor/depot_tools/third_party/pylint/utils.py +268 -44
- data/vendor/depot_tools/third_party/repo/progress.py +42 -0
- data/vendor/depot_tools/update_depot_tools +1 -1
- data/vendor/depot_tools/upload_metrics.py +25 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +45 -15
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +71 -24
- data/vendor/depot_tools/yapf +1 -1
- data/vendor/depot_tools/yapf.bat +1 -1
- metadata +92 -77
- data/vendor/depot_tools/git-crsync +0 -3
- data/vendor/depot_tools/infra/config/cq.cfg +0 -32
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref.json +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/buildbot.json +0 -105
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/shallow.json +0 -195
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle_deprecated.json +0 -248
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8.json +0 -248
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name_no_patch.json +0 -105
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/apply_gerrit.py +0 -33
- data/vendor/depot_tools/third_party/logilab/astroid/brain/py2pytest.py +0 -31
- data/vendor/depot_tools/third_party/logilab/astroid/brain/py2qt4.py +0 -22
- data/vendor/depot_tools/third_party/logilab/astroid/brain/py2stdlib.py +0 -334
- data/vendor/depot_tools/third_party/logilab/astroid/inspector.py +0 -273
- data/vendor/depot_tools/third_party/logilab/astroid/utils.py +0 -239
- data/vendor/depot_tools/third_party/logilab/common/LICENSE.txt +0 -339
- data/vendor/depot_tools/third_party/logilab/common/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/common/__init__.py +0 -175
- data/vendor/depot_tools/third_party/logilab/common/__pkginfo__.py +0 -57
- data/vendor/depot_tools/third_party/logilab/common/cache.py +0 -114
- data/vendor/depot_tools/third_party/logilab/common/changelog.py +0 -238
- data/vendor/depot_tools/third_party/logilab/common/clcommands.py +0 -334
- data/vendor/depot_tools/third_party/logilab/common/cli.py +0 -211
- data/vendor/depot_tools/third_party/logilab/common/compat.py +0 -78
- data/vendor/depot_tools/third_party/logilab/common/configuration.py +0 -1105
- data/vendor/depot_tools/third_party/logilab/common/contexts.py +0 -5
- data/vendor/depot_tools/third_party/logilab/common/corbautils.py +0 -117
- data/vendor/depot_tools/third_party/logilab/common/daemon.py +0 -101
- data/vendor/depot_tools/third_party/logilab/common/date.py +0 -335
- data/vendor/depot_tools/third_party/logilab/common/dbf.py +0 -231
- data/vendor/depot_tools/third_party/logilab/common/debugger.py +0 -214
- data/vendor/depot_tools/third_party/logilab/common/decorators.py +0 -281
- data/vendor/depot_tools/third_party/logilab/common/deprecation.py +0 -189
- data/vendor/depot_tools/third_party/logilab/common/fileutils.py +0 -404
- data/vendor/depot_tools/third_party/logilab/common/interface.py +0 -71
- data/vendor/depot_tools/third_party/logilab/common/logging_ext.py +0 -195
- data/vendor/depot_tools/third_party/logilab/common/modutils.py +0 -702
- data/vendor/depot_tools/third_party/logilab/common/optik_ext.py +0 -392
- data/vendor/depot_tools/third_party/logilab/common/optparser.py +0 -92
- data/vendor/depot_tools/third_party/logilab/common/proc.py +0 -277
- data/vendor/depot_tools/third_party/logilab/common/pyro_ext.py +0 -180
- data/vendor/depot_tools/third_party/logilab/common/pytest.py +0 -1199
- data/vendor/depot_tools/third_party/logilab/common/registry.py +0 -1119
- data/vendor/depot_tools/third_party/logilab/common/shellutils.py +0 -462
- data/vendor/depot_tools/third_party/logilab/common/sphinx_ext.py +0 -87
- data/vendor/depot_tools/third_party/logilab/common/sphinxutils.py +0 -122
- data/vendor/depot_tools/third_party/logilab/common/table.py +0 -929
- data/vendor/depot_tools/third_party/logilab/common/tasksqueue.py +0 -101
- data/vendor/depot_tools/third_party/logilab/common/testlib.py +0 -1392
- data/vendor/depot_tools/third_party/logilab/common/textutils.py +0 -537
- data/vendor/depot_tools/third_party/logilab/common/tree.py +0 -369
- data/vendor/depot_tools/third_party/logilab/common/umessage.py +0 -194
- data/vendor/depot_tools/third_party/logilab/common/ureports/__init__.py +0 -172
- data/vendor/depot_tools/third_party/logilab/common/ureports/docbook_writer.py +0 -140
- data/vendor/depot_tools/third_party/logilab/common/urllib2ext.py +0 -89
- data/vendor/depot_tools/third_party/logilab/common/visitor.py +0 -109
- data/vendor/depot_tools/third_party/logilab/common/xmlrpcutils.py +0 -131
- data/vendor/depot_tools/third_party/logilab/common/xmlutils.py +0 -61
@@ -18,6 +18,27 @@ import subprocess
|
|
18
18
|
import sys
|
19
19
|
|
20
20
|
NEED_SHELL = sys.platform.startswith('win')
|
21
|
+
GCLIENT_PATH = os.path.join(
|
22
|
+
os.path.dirname(os.path.abspath(__file__)), 'gclient.py')
|
23
|
+
|
24
|
+
|
25
|
+
# Commit subject that will be considered a roll. In the format generated by the
|
26
|
+
# git log used, so it's "<year>-<month>-<day> <author> <subject>"
|
27
|
+
_ROLL_SUBJECT = re.compile(
|
28
|
+
# Date
|
29
|
+
r'^\d\d\d\d-\d\d-\d\d '
|
30
|
+
# Author
|
31
|
+
r'[^ ]+ '
|
32
|
+
# Subject
|
33
|
+
r'('
|
34
|
+
# Generated by
|
35
|
+
# https://skia.googlesource.com/buildbot/+/master/autoroll/go/repo_manager/deps_repo_manager.go
|
36
|
+
r'Roll [^ ]+ [a-f0-9]+\.\.[a-f0-9]+ \(\d+ commits\)'
|
37
|
+
r'|'
|
38
|
+
# Generated by
|
39
|
+
# https://chromium.googlesource.com/infra/infra/+/master/recipes/recipe_modules/recipe_autoroller/api.py
|
40
|
+
r'Roll recipe dependencies \(trivial\)\.'
|
41
|
+
r')$')
|
21
42
|
|
22
43
|
|
23
44
|
class Error(Exception):
|
@@ -70,22 +91,9 @@ def should_show_log(upstream_url):
|
|
70
91
|
return True
|
71
92
|
|
72
93
|
|
73
|
-
def
|
74
|
-
gclient
|
75
|
-
|
76
|
-
return check_output([sys.executable, gclient, 'root']).strip()
|
77
|
-
|
78
|
-
|
79
|
-
def get_deps(root):
|
80
|
-
"""Returns the path and the content of the DEPS file."""
|
81
|
-
deps_path = os.path.join(root, 'DEPS')
|
82
|
-
try:
|
83
|
-
with open(deps_path, 'rb') as f:
|
84
|
-
deps_content = f.read()
|
85
|
-
except (IOError, OSError):
|
86
|
-
raise Error('Ensure the script is run in the directory '
|
87
|
-
'containing DEPS file.')
|
88
|
-
return deps_path, deps_content
|
94
|
+
def gclient(args):
|
95
|
+
"""Executes gclient with the given args and returns the stdout."""
|
96
|
+
return check_output([sys.executable, GCLIENT_PATH] + args).strip()
|
89
97
|
|
90
98
|
|
91
99
|
def generate_commit_message(
|
@@ -101,10 +109,7 @@ def generate_commit_message(
|
|
101
109
|
cwd=full_dir).rstrip()
|
102
110
|
logs = re.sub(r'(?m)^(\d\d\d\d-\d\d-\d\d [^@]+)@[^ ]+( .*)$', r'\1\2', logs)
|
103
111
|
lines = logs.splitlines()
|
104
|
-
cleaned_lines = [
|
105
|
-
l for l in lines
|
106
|
-
if not l.endswith('recipe-roller Roll recipe dependencies (trivial).')
|
107
|
-
]
|
112
|
+
cleaned_lines = [l for l in lines if not _ROLL_SUBJECT.match(l)]
|
108
113
|
logs = '\n'.join(cleaned_lines) + '\n'
|
109
114
|
|
110
115
|
nb_commits = len(lines)
|
@@ -124,17 +129,19 @@ def generate_commit_message(
|
|
124
129
|
# internal -> external rollers. Please do not remove or break it.
|
125
130
|
if not no_log and should_show_log(upstream_url):
|
126
131
|
if len(cleaned_lines) > log_limit:
|
127
|
-
# Keep the first N log entries.
|
128
|
-
|
132
|
+
# Keep the first N/2 log entries and last N/2 entries.
|
133
|
+
lines = logs.splitlines(True)
|
134
|
+
lines = lines[:log_limit/2] + ['(...)\n'] + lines[-log_limit/2:]
|
135
|
+
logs = ''.join(lines)
|
129
136
|
log_section += logs
|
130
137
|
return header + log_section
|
131
138
|
|
132
139
|
|
133
|
-
def calculate_roll(full_dir, dependency,
|
140
|
+
def calculate_roll(full_dir, dependency, roll_to):
|
134
141
|
"""Calculates the roll for a dependency by processing gclient_dict, and
|
135
142
|
fetching the dependency via git.
|
136
143
|
"""
|
137
|
-
head =
|
144
|
+
head = gclient(['getdep', '-r', dependency])
|
138
145
|
if not head:
|
139
146
|
raise Error('%s is unpinned.' % dependency)
|
140
147
|
check_call(['git', 'fetch', 'origin', '--quiet'], cwd=full_dir)
|
@@ -142,7 +149,7 @@ def calculate_roll(full_dir, dependency, gclient_dict, roll_to):
|
|
142
149
|
return head, roll_to
|
143
150
|
|
144
151
|
|
145
|
-
def gen_commit_msg(logs, cmdline,
|
152
|
+
def gen_commit_msg(logs, cmdline, reviewers, bug):
|
146
153
|
"""Returns the final commit message."""
|
147
154
|
commit_msg = ''
|
148
155
|
if len(logs) > 1:
|
@@ -150,25 +157,21 @@ def gen_commit_msg(logs, cmdline, rolls, reviewers, bug):
|
|
150
157
|
commit_msg += '\n\n'.join(logs)
|
151
158
|
commit_msg += '\nCreated with:\n ' + cmdline + '\n'
|
152
159
|
commit_msg += 'R=%s\n' % ','.join(reviewers) if reviewers else ''
|
153
|
-
commit_msg += '
|
160
|
+
commit_msg += '\nBug: %s\n' % bug if bug else ''
|
154
161
|
return commit_msg
|
155
162
|
|
156
163
|
|
157
|
-
def finalize(commit_msg,
|
158
|
-
"""
|
164
|
+
def finalize(commit_msg, current_dir, rolls):
|
165
|
+
"""Commits changes to the DEPS file, then uploads a CL."""
|
159
166
|
print('Commit message:')
|
160
167
|
print('\n'.join(' ' + i for i in commit_msg.splitlines()))
|
161
168
|
|
162
|
-
with open(deps_path, 'wb') as f:
|
163
|
-
f.write(deps_content)
|
164
|
-
current_dir = os.path.dirname(deps_path)
|
165
169
|
check_call(['git', 'add', 'DEPS'], cwd=current_dir)
|
166
170
|
check_call(['git', 'commit', '--quiet', '-m', commit_msg], cwd=current_dir)
|
167
171
|
|
168
172
|
# Pull the dependency to the right revision. This is surprising to users
|
169
173
|
# otherwise.
|
170
|
-
for
|
171
|
-
full_dir = os.path.normpath(os.path.join(root_dir, dependency))
|
174
|
+
for _head, roll_to, full_dir in sorted(rolls.itervalues()):
|
172
175
|
check_call(['git', 'checkout', '--quiet', roll_to], cwd=full_dir)
|
173
176
|
|
174
177
|
|
@@ -213,7 +216,7 @@ def main():
|
|
213
216
|
if not '@' in r:
|
214
217
|
reviewers[i] = r + '@chromium.org'
|
215
218
|
|
216
|
-
gclient_root =
|
219
|
+
gclient_root = gclient(['root'])
|
217
220
|
current_dir = os.getcwd()
|
218
221
|
dependencies = sorted(d.rstrip('/').rstrip('\\') for d in args.dep_path)
|
219
222
|
cmdline = 'roll-dep ' + ' '.join(dependencies) + ''.join(
|
@@ -224,17 +227,17 @@ def main():
|
|
224
227
|
'Ensure %s is clean first (no non-merged commits).' % current_dir)
|
225
228
|
# First gather all the information without modifying anything, except for a
|
226
229
|
# git fetch.
|
227
|
-
deps_path, deps_content = get_deps(current_dir)
|
228
|
-
gclient_dict = gclient_eval.Exec(deps_content, deps_path)
|
229
|
-
is_relative = gclient_dict.get('use_relative_paths', False)
|
230
|
-
root_dir = current_dir if is_relative else gclient_root
|
231
230
|
rolls = {}
|
232
231
|
for dependency in dependencies:
|
233
|
-
full_dir = os.path.normpath(os.path.join(
|
232
|
+
full_dir = os.path.normpath(os.path.join(gclient_root, dependency))
|
234
233
|
if not os.path.isdir(full_dir):
|
235
|
-
|
236
|
-
|
237
|
-
|
234
|
+
print('Dependency %s not found at %s' % (dependency, full_dir))
|
235
|
+
full_dir = os.path.normpath(os.path.join(current_dir, dependency))
|
236
|
+
print('Will look for relative dependency at %s' % full_dir)
|
237
|
+
if not os.path.isdir(full_dir):
|
238
|
+
raise Error('Directory not found: %s (%s)' % (dependency, full_dir))
|
239
|
+
|
240
|
+
head, roll_to = calculate_roll(full_dir, dependency, args.roll_to)
|
238
241
|
if roll_to == head:
|
239
242
|
if len(dependencies) == 1:
|
240
243
|
raise AlreadyRolledError('No revision to roll!')
|
@@ -242,20 +245,20 @@ def main():
|
|
242
245
|
else:
|
243
246
|
print(
|
244
247
|
'%s: Rolling from %s to %s' % (dependency, head[:10], roll_to[:10]))
|
245
|
-
rolls[dependency] = (head, roll_to)
|
248
|
+
rolls[dependency] = (head, roll_to, full_dir)
|
246
249
|
|
247
250
|
logs = []
|
248
|
-
|
249
|
-
|
251
|
+
setdep_args = []
|
252
|
+
for dependency, (head, roll_to, full_dir) in sorted(rolls.iteritems()):
|
250
253
|
log = generate_commit_message(
|
251
254
|
full_dir, dependency, head, roll_to, args.no_log, args.log_limit)
|
252
255
|
logs.append(log)
|
253
|
-
|
256
|
+
setdep_args.extend(['-r', '{}@{}'.format(dependency, roll_to)])
|
254
257
|
|
255
|
-
|
258
|
+
gclient(['setdep'] + setdep_args)
|
256
259
|
|
257
|
-
commit_msg = gen_commit_msg(logs, cmdline,
|
258
|
-
finalize(commit_msg,
|
260
|
+
commit_msg = gen_commit_msg(logs, cmdline, reviewers, args.bug)
|
261
|
+
finalize(commit_msg, current_dir, rolls)
|
259
262
|
except Error as e:
|
260
263
|
sys.stderr.write('error: %s\n' % e)
|
261
264
|
return 2 if isinstance(e, AlreadyRolledError) else 1
|
data/vendor/depot_tools/scm.py
CHANGED
@@ -4,8 +4,8 @@
|
|
4
4
|
|
5
5
|
"""SCM-specific utility classes."""
|
6
6
|
|
7
|
-
import cStringIO
|
8
7
|
import glob
|
8
|
+
import io
|
9
9
|
import logging
|
10
10
|
import os
|
11
11
|
import platform
|
@@ -20,8 +20,9 @@ import subprocess2
|
|
20
20
|
|
21
21
|
|
22
22
|
def ValidateEmail(email):
|
23
|
-
return (
|
24
|
-
|
23
|
+
return (
|
24
|
+
re.match(r"^[a-zA-Z0-9._%\-+]+@[a-zA-Z0-9._%-]+.[a-zA-Z]{2,6}$", email)
|
25
|
+
is not None)
|
25
26
|
|
26
27
|
|
27
28
|
def GetCasedPath(path):
|
@@ -50,7 +51,7 @@ def GenFakeDiff(filename):
|
|
50
51
|
filename = filename.replace(os.sep, '/')
|
51
52
|
nb_lines = len(file_content)
|
52
53
|
# We need to use / since patch on unix will fail otherwise.
|
53
|
-
data =
|
54
|
+
data = io.StringIO()
|
54
55
|
data.write("Index: %s\n" % filename)
|
55
56
|
data.write('=' * 67 + '\n')
|
56
57
|
# Note: Should we use /dev/null instead?
|
@@ -225,7 +226,7 @@ class GIT(object):
|
|
225
226
|
return remote, upstream_branch
|
226
227
|
|
227
228
|
@staticmethod
|
228
|
-
def RefToRemoteRef(ref, remote
|
229
|
+
def RefToRemoteRef(ref, remote):
|
229
230
|
"""Convert a checkout ref to the equivalent remote ref.
|
230
231
|
|
231
232
|
Returns:
|
@@ -239,10 +240,24 @@ class GIT(object):
|
|
239
240
|
m = re.match('^(refs/(remotes/)?)?branch-heads/', ref or '')
|
240
241
|
if m:
|
241
242
|
return ('refs/remotes/branch-heads/', ref.replace(m.group(0), ''))
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
243
|
+
|
244
|
+
m = re.match('^((refs/)?remotes/)?%s/|(refs/)?heads/' % remote, ref or '')
|
245
|
+
if m:
|
246
|
+
return ('refs/remotes/%s/' % remote, ref.replace(m.group(0), ''))
|
247
|
+
|
248
|
+
return None
|
249
|
+
|
250
|
+
@staticmethod
|
251
|
+
def RemoteRefToRef(ref, remote):
|
252
|
+
assert remote, 'A remote must be given'
|
253
|
+
if not ref or not ref.startswith('refs/'):
|
254
|
+
return None
|
255
|
+
if not ref.startswith('refs/remotes/'):
|
256
|
+
return ref
|
257
|
+
if ref.startswith('refs/remotes/branch-heads/'):
|
258
|
+
return 'refs' + ref[len('refs/remotes'):]
|
259
|
+
if ref.startswith('refs/remotes/%s/' % remote):
|
260
|
+
return 'refs/heads' + ref[len('refs/remotes/%s' % remote):]
|
246
261
|
return None
|
247
262
|
|
248
263
|
@staticmethod
|
@@ -255,6 +270,15 @@ class GIT(object):
|
|
255
270
|
upstream_branch = ''.join(remote_ref)
|
256
271
|
return upstream_branch
|
257
272
|
|
273
|
+
@staticmethod
|
274
|
+
def IsAncestor(cwd, maybe_ancestor, ref):
|
275
|
+
"""Verifies if |maybe_ancestor| is an ancestor of |ref|."""
|
276
|
+
try:
|
277
|
+
GIT.Capture(['merge-base', '--is-ancestor', maybe_ancestor, ref], cwd=cwd)
|
278
|
+
return True
|
279
|
+
except subprocess2.CalledProcessError:
|
280
|
+
return False
|
281
|
+
|
258
282
|
@staticmethod
|
259
283
|
def GetOldContents(cwd, filename, branch=None):
|
260
284
|
if not branch:
|
@@ -345,20 +369,11 @@ class GIT(object):
|
|
345
369
|
|
346
370
|
sha_only: Fail unless rev is a sha hash.
|
347
371
|
"""
|
348
|
-
# 'git rev-parse foo' where foo is *any* 40 character hex string will return
|
349
|
-
# the string and return code 0. So strip one character to force 'git
|
350
|
-
# rev-parse' to do a hash table look-up and returns 128 if the hash is not
|
351
|
-
# present.
|
352
|
-
lookup_rev = rev
|
353
|
-
if re.match(r'^[0-9a-fA-F]{40}$', rev):
|
354
|
-
lookup_rev = rev[:-1]
|
355
372
|
try:
|
356
|
-
sha = GIT.Capture(['rev-parse',
|
357
|
-
|
358
|
-
# Make sure we get the original 40 chars back.
|
359
|
-
return rev.lower() == sha
|
373
|
+
sha = GIT.Capture(['rev-parse', '--verify', '%s^{commit}' % rev],
|
374
|
+
cwd=cwd)
|
360
375
|
if sha_only:
|
361
|
-
return sha
|
376
|
+
return sha == rev.lower()
|
362
377
|
return True
|
363
378
|
except subprocess2.CalledProcessError:
|
364
379
|
return False
|
@@ -368,9 +383,9 @@ class GIT(object):
|
|
368
383
|
"""Asserts git's version is at least min_version."""
|
369
384
|
if cls.current_version is None:
|
370
385
|
current_version = cls.Capture(['--version'], '.')
|
371
|
-
matched = re.search(r'version ([0-9\.]+)', current_version)
|
386
|
+
matched = re.search(r'version ([0-9\.]+)', current_version.decode())
|
372
387
|
cls.current_version = matched.group(1)
|
373
|
-
current_version_list = map(only_int, cls.current_version.split('.'))
|
388
|
+
current_version_list = list(map(only_int, cls.current_version.split('.')))
|
374
389
|
for min_ver in map(int, min_version.split('.')):
|
375
390
|
ver = current_version_list.pop(0)
|
376
391
|
if ver < min_ver:
|
@@ -3,6 +3,8 @@
|
|
3
3
|
# Use of this source code is governed by a BSD-style license that can be
|
4
4
|
# found in the LICENSE file.
|
5
5
|
|
6
|
+
from __future__ import print_function
|
7
|
+
|
6
8
|
import os
|
7
9
|
import sys
|
8
10
|
from third_party import colorama
|
@@ -90,5 +92,5 @@ def init():
|
|
90
92
|
|
91
93
|
if __name__ == '__main__':
|
92
94
|
init()
|
93
|
-
print
|
94
|
-
print
|
95
|
+
print('IS_TTY:', IS_TTY)
|
96
|
+
print('OUT_TYPE:', OUT_TYPE)
|
@@ -19,6 +19,13 @@ import owners_finder
|
|
19
19
|
import git_common as git
|
20
20
|
|
21
21
|
|
22
|
+
# If a call to `git cl split` will generate more than this number of CLs, the
|
23
|
+
# command will prompt the user to make sure they know what they're doing. Large
|
24
|
+
# numbers of CLs generated by `git cl split` have caused infrastructure issues
|
25
|
+
# in the past.
|
26
|
+
CL_SPLIT_FORCE_LIMIT = 10
|
27
|
+
|
28
|
+
|
22
29
|
def ReadFile(file_path):
|
23
30
|
"""Returns the content of |file_path|."""
|
24
31
|
with open(file_path) as f:
|
@@ -67,7 +74,8 @@ def AddUploadedByGitClSplitToDescription(description):
|
|
67
74
|
|
68
75
|
|
69
76
|
def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
|
70
|
-
description, comment, reviewers, changelist, cmd_upload
|
77
|
+
description, comment, reviewers, changelist, cmd_upload,
|
78
|
+
cq_dry_run, enable_auto_submit):
|
71
79
|
"""Uploads a CL with all changes to |files| in |refactor_branch|.
|
72
80
|
|
73
81
|
Args:
|
@@ -81,6 +89,8 @@ def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
|
|
81
89
|
reviewers: A set of reviewers for the CL.
|
82
90
|
changelist: The Changelist class.
|
83
91
|
cmd_upload: The function associated with the git cl upload command.
|
92
|
+
cq_dry_run: If CL uploads should also do a cq dry run.
|
93
|
+
enable_auto_submit: If CL uploads should also enable auto submit.
|
84
94
|
"""
|
85
95
|
# Create a branch.
|
86
96
|
if not CreateBranchForDirectory(
|
@@ -107,9 +117,13 @@ def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
|
|
107
117
|
os.remove(tmp_file.name)
|
108
118
|
|
109
119
|
# Upload a CL.
|
110
|
-
upload_args = ['-f', '
|
120
|
+
upload_args = ['-f', '-r', ','.join(reviewers)]
|
121
|
+
if cq_dry_run:
|
122
|
+
upload_args.append('--cq-dry-run')
|
111
123
|
if not comment:
|
112
124
|
upload_args.append('--send-mail')
|
125
|
+
if enable_auto_submit:
|
126
|
+
upload_args.append('--enable-auto-submit')
|
113
127
|
print 'Uploading CL for ' + directory + '.'
|
114
128
|
cmd_upload(upload_args)
|
115
129
|
if comment:
|
@@ -156,7 +170,8 @@ def PrintClInfo(cl_index, num_cls, directory, file_paths, description,
|
|
156
170
|
print
|
157
171
|
|
158
172
|
|
159
|
-
def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run
|
173
|
+
def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
|
174
|
+
cq_dry_run, enable_auto_submit):
|
160
175
|
""""Splits a branch into smaller branches and uploads CLs.
|
161
176
|
|
162
177
|
Args:
|
@@ -165,6 +180,8 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run):
|
|
165
180
|
changelist: The Changelist class.
|
166
181
|
cmd_upload: The function associated with the git cl upload command.
|
167
182
|
dry_run: Whether this is a dry run (no branches or CLs created).
|
183
|
+
cq_dry_run: If CL uploads should also do a cq dry run.
|
184
|
+
enable_auto_submit: If CL uploads should also enable auto submit.
|
168
185
|
|
169
186
|
Returns:
|
170
187
|
0 in case of success. 1 in case of error.
|
@@ -198,6 +215,16 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run):
|
|
198
215
|
num_cls = len(files_split_by_owners)
|
199
216
|
print('Will split current branch (' + refactor_branch + ') into ' +
|
200
217
|
str(num_cls) + ' CLs.\n')
|
218
|
+
if cq_dry_run and num_cls > CL_SPLIT_FORCE_LIMIT:
|
219
|
+
print (
|
220
|
+
'This will generate "%r" CLs. This many CLs can potentially generate'
|
221
|
+
' too much load on the build infrastructure. Please email'
|
222
|
+
' infra-dev@chromium.org to ensure that this won\'t break anything.'
|
223
|
+
' The infra team reserves the right to cancel your jobs if they are'
|
224
|
+
' overloading the CQ.') % num_cls
|
225
|
+
answer = raw_input('Proceed? (y/n):')
|
226
|
+
if answer.lower() != 'y':
|
227
|
+
return 0
|
201
228
|
|
202
229
|
for cl_index, (directory, files) in \
|
203
230
|
enumerate(files_split_by_owners.iteritems(), 1):
|
@@ -212,7 +239,8 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run):
|
|
212
239
|
reviewers)
|
213
240
|
else:
|
214
241
|
UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
|
215
|
-
description, comment, reviewers, changelist, cmd_upload
|
242
|
+
description, comment, reviewers, changelist, cmd_upload,
|
243
|
+
cq_dry_run, enable_auto_submit)
|
216
244
|
|
217
245
|
# Go back to the original branch.
|
218
246
|
git.run('checkout', refactor_branch)
|
@@ -7,16 +7,34 @@
|
|
7
7
|
In theory you shouldn't need anything else in subprocess, or this module failed.
|
8
8
|
"""
|
9
9
|
|
10
|
-
import
|
10
|
+
import codecs
|
11
11
|
import errno
|
12
|
+
import io
|
12
13
|
import logging
|
13
14
|
import os
|
14
|
-
|
15
|
+
|
16
|
+
try:
|
17
|
+
import Queue
|
18
|
+
except ImportError: # For Py3 compatibility
|
19
|
+
import queue as Queue
|
20
|
+
|
15
21
|
import subprocess
|
16
22
|
import sys
|
17
23
|
import time
|
18
24
|
import threading
|
19
25
|
|
26
|
+
# Cache the string-escape codec to ensure subprocess can find it later.
|
27
|
+
# See crbug.com/912292#c2 for context.
|
28
|
+
if sys.version_info.major == 2:
|
29
|
+
codecs.lookup('string-escape')
|
30
|
+
|
31
|
+
# TODO(crbug.com/953884): Remove this when python3 migration is done.
|
32
|
+
try:
|
33
|
+
basestring
|
34
|
+
except NameError:
|
35
|
+
# pylint: disable=redefined-builtin
|
36
|
+
basestring = str
|
37
|
+
|
20
38
|
|
21
39
|
# Constants forwarded from subprocess.
|
22
40
|
PIPE = subprocess.PIPE
|
@@ -244,7 +262,7 @@ class Popen(subprocess.Popen):
|
|
244
262
|
try:
|
245
263
|
with self.popen_lock:
|
246
264
|
super(Popen, self).__init__(args, **kwargs)
|
247
|
-
except OSError
|
265
|
+
except OSError as e:
|
248
266
|
if e.errno == errno.EAGAIN and sys.platform == 'cygwin':
|
249
267
|
# Convert fork() emulation failure into a CygwinRebaseError().
|
250
268
|
raise CygwinRebaseError(
|
@@ -281,7 +299,7 @@ class Popen(subprocess.Popen):
|
|
281
299
|
|
282
300
|
def write_stdin():
|
283
301
|
try:
|
284
|
-
stdin_io =
|
302
|
+
stdin_io = io.BytesIO(input)
|
285
303
|
while True:
|
286
304
|
data = stdin_io.read(1024)
|
287
305
|
if data:
|