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
@@ -4,17 +4,25 @@
|
|
4
4
|
|
5
5
|
"""Generic utils."""
|
6
6
|
|
7
|
+
from __future__ import print_function
|
8
|
+
|
7
9
|
import codecs
|
8
10
|
import collections
|
9
11
|
import contextlib
|
10
|
-
import cStringIO
|
11
12
|
import datetime
|
13
|
+
import functools
|
14
|
+
import io
|
12
15
|
import logging
|
13
16
|
import operator
|
14
17
|
import os
|
15
18
|
import pipes
|
16
19
|
import platform
|
17
|
-
|
20
|
+
|
21
|
+
try:
|
22
|
+
import Queue as queue
|
23
|
+
except ImportError: # For Py3 compatibility
|
24
|
+
import queue
|
25
|
+
|
18
26
|
import re
|
19
27
|
import stat
|
20
28
|
import subprocess
|
@@ -22,10 +30,19 @@ import sys
|
|
22
30
|
import tempfile
|
23
31
|
import threading
|
24
32
|
import time
|
25
|
-
|
33
|
+
|
34
|
+
try:
|
35
|
+
import urlparse
|
36
|
+
except ImportError: # For Py3 compatibility
|
37
|
+
import urllib.parse as urlparse
|
26
38
|
|
27
39
|
import subprocess2
|
28
40
|
|
41
|
+
if sys.version_info.major == 2:
|
42
|
+
from cStringIO import StringIO
|
43
|
+
else:
|
44
|
+
from io import StringIO
|
45
|
+
|
29
46
|
|
30
47
|
RETRY_MAX = 3
|
31
48
|
RETRY_INITIAL_SLEEP = 0.5
|
@@ -42,6 +59,18 @@ THREADED_INDEX_PACK_BLACKLIST = [
|
|
42
59
|
'https://chromium.googlesource.com/chromium/reference_builds/chrome_win.git'
|
43
60
|
]
|
44
61
|
|
62
|
+
"""To support rethrowing exceptions with tracebacks on both Py2 and 3."""
|
63
|
+
if sys.version_info.major == 2:
|
64
|
+
# We have to use exec to avoid a SyntaxError in Python 3.
|
65
|
+
exec("def reraise(typ, value, tb=None):\n raise typ, value, tb\n")
|
66
|
+
else:
|
67
|
+
def reraise(typ, value, tb=None):
|
68
|
+
if value is None:
|
69
|
+
value = typ()
|
70
|
+
if value.__traceback__ is not tb:
|
71
|
+
raise value.with_traceback(tb)
|
72
|
+
raise value
|
73
|
+
|
45
74
|
|
46
75
|
class Error(Exception):
|
47
76
|
"""gclient exception class."""
|
@@ -61,9 +90,9 @@ def Elapsed(until=None):
|
|
61
90
|
def PrintWarnings():
|
62
91
|
"""Prints any accumulated warnings."""
|
63
92
|
if _WARNINGS:
|
64
|
-
print
|
93
|
+
print('\n\nWarnings:', file=sys.stderr)
|
65
94
|
for warning in _WARNINGS:
|
66
|
-
print
|
95
|
+
print(warning, file=sys.stderr)
|
67
96
|
|
68
97
|
|
69
98
|
def AddWarning(msg):
|
@@ -142,7 +171,8 @@ def FileRead(filename, mode='rU'):
|
|
142
171
|
s = f.read()
|
143
172
|
try:
|
144
173
|
return s.decode('utf-8')
|
145
|
-
|
174
|
+
# AttributeError is for Py3 compatibility
|
175
|
+
except (UnicodeDecodeError, AttributeError):
|
146
176
|
return s
|
147
177
|
|
148
178
|
|
@@ -225,12 +255,12 @@ def rmtree(path):
|
|
225
255
|
if sys.platform == 'win32':
|
226
256
|
# Give up and use cmd.exe's rd command.
|
227
257
|
path = os.path.normcase(path)
|
228
|
-
for _ in
|
258
|
+
for _ in range(3):
|
229
259
|
exitcode = subprocess.call(['cmd.exe', '/c', 'rd', '/q', '/s', path])
|
230
260
|
if exitcode == 0:
|
231
261
|
return
|
232
262
|
else:
|
233
|
-
print
|
263
|
+
print('rd exited with code %d' % exitcode, file=sys.stderr)
|
234
264
|
time.sleep(3)
|
235
265
|
raise Exception('Failed to remove path %s' % path)
|
236
266
|
|
@@ -268,7 +298,7 @@ def safe_makedirs(tree):
|
|
268
298
|
count += 1
|
269
299
|
try:
|
270
300
|
os.makedirs(tree)
|
271
|
-
except OSError
|
301
|
+
except OSError as e:
|
272
302
|
# 17 POSIX, 183 Windows
|
273
303
|
if e.errno not in (17, 183):
|
274
304
|
raise
|
@@ -491,9 +521,9 @@ class GClientChildren(object):
|
|
491
521
|
|
492
522
|
with GCLIENT_CHILDREN_LOCK:
|
493
523
|
if GCLIENT_CHILDREN:
|
494
|
-
print
|
524
|
+
print('Could not kill the following subprocesses:', file=sys.stderr)
|
495
525
|
for zombie in GCLIENT_CHILDREN:
|
496
|
-
print
|
526
|
+
print(' ', zombie.pid, file=sys.stderr)
|
497
527
|
|
498
528
|
|
499
529
|
def CheckCallAndFilter(args, stdout=None, filter_fn=None,
|
@@ -514,12 +544,12 @@ def CheckCallAndFilter(args, stdout=None, filter_fn=None,
|
|
514
544
|
"""
|
515
545
|
assert print_stdout or filter_fn
|
516
546
|
stdout = stdout or sys.stdout
|
517
|
-
output =
|
547
|
+
output = io.BytesIO()
|
518
548
|
filter_fn = filter_fn or (lambda x: None)
|
519
549
|
|
520
550
|
sleep_interval = RETRY_INITIAL_SLEEP
|
521
551
|
run_cwd = kwargs.get('cwd', os.getcwd())
|
522
|
-
for _ in
|
552
|
+
for _ in range(RETRY_MAX + 1):
|
523
553
|
kid = subprocess2.Popen(
|
524
554
|
args, bufsize=0, stdout=subprocess2.PIPE, stderr=subprocess2.STDOUT,
|
525
555
|
**kwargs)
|
@@ -539,7 +569,7 @@ def CheckCallAndFilter(args, stdout=None, filter_fn=None,
|
|
539
569
|
if in_byte:
|
540
570
|
if call_filter_on_first_line:
|
541
571
|
filter_fn(None)
|
542
|
-
in_line = ''
|
572
|
+
in_line = b''
|
543
573
|
while in_byte:
|
544
574
|
output.write(in_byte)
|
545
575
|
if print_stdout:
|
@@ -548,7 +578,7 @@ def CheckCallAndFilter(args, stdout=None, filter_fn=None,
|
|
548
578
|
in_line += in_byte
|
549
579
|
else:
|
550
580
|
filter_fn(in_line)
|
551
|
-
in_line = ''
|
581
|
+
in_line = b''
|
552
582
|
in_byte = kid.stdout.read(1)
|
553
583
|
# Flush the rest of buffered output. This is only an issue with
|
554
584
|
# stdout/stderr not ending with a \n.
|
@@ -561,15 +591,15 @@ def CheckCallAndFilter(args, stdout=None, filter_fn=None,
|
|
561
591
|
GClientChildren.remove(kid)
|
562
592
|
|
563
593
|
except KeyboardInterrupt:
|
564
|
-
print
|
594
|
+
print('Failed while running "%s"' % ' '.join(args), file=sys.stderr)
|
565
595
|
raise
|
566
596
|
|
567
597
|
if rv == 0:
|
568
598
|
return output.getvalue()
|
569
599
|
if not retry:
|
570
600
|
break
|
571
|
-
print
|
572
|
-
|
601
|
+
print("WARNING: subprocess '%s' in %s failed; will retry after a short "
|
602
|
+
'nap...' % (' '.join('"%s"' % x for x in args), run_cwd))
|
573
603
|
time.sleep(sleep_interval)
|
574
604
|
sleep_interval *= 2
|
575
605
|
raise subprocess2.CalledProcessError(
|
@@ -602,13 +632,13 @@ class GitFilter(object):
|
|
602
632
|
|
603
633
|
def __call__(self, line):
|
604
634
|
# git uses an escape sequence to clear the line; elide it.
|
605
|
-
esc = line.find(
|
635
|
+
esc = line.find(chr(0o33).encode())
|
606
636
|
if esc > -1:
|
607
637
|
line = line[:esc]
|
608
638
|
if self.predicate and not self.predicate(line):
|
609
639
|
return
|
610
640
|
now = time.time()
|
611
|
-
match = self.PERCENT_RE.match(line)
|
641
|
+
match = self.PERCENT_RE.match(line.decode())
|
612
642
|
if match:
|
613
643
|
if match.group(1) != self.progress_prefix:
|
614
644
|
self.progress_prefix = match.group(1)
|
@@ -616,60 +646,7 @@ class GitFilter(object):
|
|
616
646
|
return
|
617
647
|
self.last_time = now
|
618
648
|
self.out_fh.write('[%s] ' % Elapsed())
|
619
|
-
print
|
620
|
-
|
621
|
-
|
622
|
-
def FindGclientRoot(from_dir, filename='.gclient'):
|
623
|
-
"""Tries to find the gclient root."""
|
624
|
-
real_from_dir = os.path.realpath(from_dir)
|
625
|
-
path = real_from_dir
|
626
|
-
while not os.path.exists(os.path.join(path, filename)):
|
627
|
-
split_path = os.path.split(path)
|
628
|
-
if not split_path[1]:
|
629
|
-
return None
|
630
|
-
path = split_path[0]
|
631
|
-
|
632
|
-
# If we did not find the file in the current directory, make sure we are in a
|
633
|
-
# sub directory that is controlled by this configuration.
|
634
|
-
if path != real_from_dir:
|
635
|
-
entries_filename = os.path.join(path, filename + '_entries')
|
636
|
-
if not os.path.exists(entries_filename):
|
637
|
-
# If .gclient_entries does not exist, a previous call to gclient sync
|
638
|
-
# might have failed. In that case, we cannot verify that the .gclient
|
639
|
-
# is the one we want to use. In order to not to cause too much trouble,
|
640
|
-
# just issue a warning and return the path anyway.
|
641
|
-
print >> sys.stderr, ("%s missing, %s file in parent directory %s might "
|
642
|
-
"not be the file you want to use." %
|
643
|
-
(entries_filename, filename, path))
|
644
|
-
return path
|
645
|
-
scope = {}
|
646
|
-
try:
|
647
|
-
exec(FileRead(entries_filename), scope)
|
648
|
-
except SyntaxError, e:
|
649
|
-
SyntaxErrorToError(filename, e)
|
650
|
-
all_directories = scope['entries'].keys()
|
651
|
-
path_to_check = real_from_dir[len(path)+1:]
|
652
|
-
while path_to_check:
|
653
|
-
if path_to_check in all_directories:
|
654
|
-
return path
|
655
|
-
path_to_check = os.path.dirname(path_to_check)
|
656
|
-
return None
|
657
|
-
|
658
|
-
logging.info('Found gclient root at ' + path)
|
659
|
-
return path
|
660
|
-
|
661
|
-
|
662
|
-
def PathDifference(root, subpath):
|
663
|
-
"""Returns the difference subpath minus root."""
|
664
|
-
root = os.path.realpath(root)
|
665
|
-
subpath = os.path.realpath(subpath)
|
666
|
-
if not subpath.startswith(root):
|
667
|
-
return None
|
668
|
-
# If the root does not have a trailing \ or /, we add it so the returned
|
669
|
-
# path starts immediately after the seperator regardless of whether it is
|
670
|
-
# provided.
|
671
|
-
root = os.path.join(root, '')
|
672
|
-
return subpath[len(root):]
|
649
|
+
print(line, file=self.out_fh)
|
673
650
|
|
674
651
|
|
675
652
|
def FindFileUpwards(filename, path=None):
|
@@ -701,95 +678,12 @@ def GetMacWinOrLinux():
|
|
701
678
|
raise Error('Unknown platform: ' + sys.platform)
|
702
679
|
|
703
680
|
|
704
|
-
def GetPrimarySolutionPath():
|
705
|
-
"""Returns the full path to the primary solution. (gclient_root + src)"""
|
706
|
-
|
707
|
-
gclient_root = FindGclientRoot(os.getcwd())
|
708
|
-
if not gclient_root:
|
709
|
-
# Some projects might not use .gclient. Try to see whether we're in a git
|
710
|
-
# checkout.
|
711
|
-
top_dir = [os.getcwd()]
|
712
|
-
def filter_fn(line):
|
713
|
-
repo_root_path = os.path.normpath(line.rstrip('\n'))
|
714
|
-
if os.path.exists(repo_root_path):
|
715
|
-
top_dir[0] = repo_root_path
|
716
|
-
try:
|
717
|
-
CheckCallAndFilter(["git", "rev-parse", "--show-toplevel"],
|
718
|
-
print_stdout=False, filter_fn=filter_fn)
|
719
|
-
except Exception:
|
720
|
-
pass
|
721
|
-
top_dir = top_dir[0]
|
722
|
-
if os.path.exists(os.path.join(top_dir, 'buildtools')):
|
723
|
-
return top_dir
|
724
|
-
return None
|
725
|
-
|
726
|
-
# Some projects' top directory is not named 'src'.
|
727
|
-
source_dir_name = GetGClientPrimarySolutionName(gclient_root) or 'src'
|
728
|
-
return os.path.join(gclient_root, source_dir_name)
|
729
|
-
|
730
|
-
|
731
|
-
def GetBuildtoolsPath():
|
732
|
-
"""Returns the full path to the buildtools directory.
|
733
|
-
This is based on the root of the checkout containing the current directory."""
|
734
|
-
|
735
|
-
# Overriding the build tools path by environment is highly unsupported and may
|
736
|
-
# break without warning. Do not rely on this for anything important.
|
737
|
-
override = os.environ.get('CHROMIUM_BUILDTOOLS_PATH')
|
738
|
-
if override is not None:
|
739
|
-
return override
|
740
|
-
|
741
|
-
primary_solution = GetPrimarySolutionPath()
|
742
|
-
if not primary_solution:
|
743
|
-
return None
|
744
|
-
buildtools_path = os.path.join(primary_solution, 'buildtools')
|
745
|
-
if not os.path.exists(buildtools_path):
|
746
|
-
# Buildtools may be in the gclient root.
|
747
|
-
gclient_root = FindGclientRoot(os.getcwd())
|
748
|
-
buildtools_path = os.path.join(gclient_root, 'buildtools')
|
749
|
-
return buildtools_path
|
750
|
-
|
751
|
-
|
752
|
-
def GetBuildtoolsPlatformBinaryPath():
|
753
|
-
"""Returns the full path to the binary directory for the current platform."""
|
754
|
-
buildtools_path = GetBuildtoolsPath()
|
755
|
-
if not buildtools_path:
|
756
|
-
return None
|
757
|
-
|
758
|
-
if sys.platform.startswith(('cygwin', 'win')):
|
759
|
-
subdir = 'win'
|
760
|
-
elif sys.platform == 'darwin':
|
761
|
-
subdir = 'mac'
|
762
|
-
elif sys.platform.startswith('linux'):
|
763
|
-
subdir = 'linux64'
|
764
|
-
else:
|
765
|
-
raise Error('Unknown platform: ' + sys.platform)
|
766
|
-
return os.path.join(buildtools_path, subdir)
|
767
|
-
|
768
|
-
|
769
|
-
def GetExeSuffix():
|
770
|
-
"""Returns '' or '.exe' depending on how executables work on this platform."""
|
771
|
-
if sys.platform.startswith(('cygwin', 'win')):
|
772
|
-
return '.exe'
|
773
|
-
return ''
|
774
|
-
|
775
|
-
|
776
|
-
def GetGClientPrimarySolutionName(gclient_root_dir_path):
|
777
|
-
"""Returns the name of the primary solution in the .gclient file specified."""
|
778
|
-
gclient_config_file = os.path.join(gclient_root_dir_path, '.gclient')
|
779
|
-
env = {}
|
780
|
-
execfile(gclient_config_file, env)
|
781
|
-
solutions = env.get('solutions', [])
|
782
|
-
if solutions:
|
783
|
-
return solutions[0].get('name')
|
784
|
-
return None
|
785
|
-
|
786
|
-
|
787
681
|
def GetGClientRootAndEntries(path=None):
|
788
682
|
"""Returns the gclient root and the dict of entries."""
|
789
683
|
config_file = '.gclient_entries'
|
790
684
|
root = FindFileUpwards(config_file, path)
|
791
685
|
if not root:
|
792
|
-
print
|
686
|
+
print("Can't find %s" % config_file)
|
793
687
|
return None
|
794
688
|
config_path = os.path.join(root, config_file)
|
795
689
|
env = {}
|
@@ -805,7 +699,7 @@ def lockedmethod(method):
|
|
805
699
|
try:
|
806
700
|
self.lock.acquire()
|
807
701
|
except KeyboardInterrupt:
|
808
|
-
print
|
702
|
+
print('Was deadlocked', file=sys.stderr)
|
809
703
|
raise
|
810
704
|
return method(self, *args, **kwargs)
|
811
705
|
finally:
|
@@ -823,7 +717,7 @@ class WorkItem(object):
|
|
823
717
|
def __init__(self, name):
|
824
718
|
# A unique string representing this work item.
|
825
719
|
self._name = name
|
826
|
-
self.outbuf =
|
720
|
+
self.outbuf = StringIO()
|
827
721
|
self.start = self.finish = None
|
828
722
|
self.resources = [] # List of resources this work item requires.
|
829
723
|
|
@@ -860,7 +754,7 @@ class ExecutionQueue(object):
|
|
860
754
|
# List of items currently running.
|
861
755
|
self.running = []
|
862
756
|
# Exceptions thrown if any.
|
863
|
-
self.exceptions =
|
757
|
+
self.exceptions = queue.Queue()
|
864
758
|
# Progress status
|
865
759
|
self.progress = progress
|
866
760
|
if self.progress:
|
@@ -938,7 +832,7 @@ class ExecutionQueue(object):
|
|
938
832
|
break
|
939
833
|
|
940
834
|
# Check for new tasks to start.
|
941
|
-
for i in
|
835
|
+
for i in range(len(self.queued)):
|
942
836
|
# Verify its requirements.
|
943
837
|
if (self.ignore_requirements or
|
944
838
|
not (set(self.queued[i].requirements) - set(self.ran))):
|
@@ -962,28 +856,28 @@ class ExecutionQueue(object):
|
|
962
856
|
if (now - self.last_join > datetime.timedelta(seconds=60) and
|
963
857
|
self.last_subproc_output > self.last_join):
|
964
858
|
if self.progress:
|
965
|
-
print
|
859
|
+
print('')
|
966
860
|
sys.stdout.flush()
|
967
861
|
elapsed = Elapsed()
|
968
|
-
print
|
862
|
+
print('[%s] Still working on:' % elapsed)
|
969
863
|
sys.stdout.flush()
|
970
864
|
for task in self.running:
|
971
|
-
print
|
865
|
+
print('[%s] %s' % (elapsed, task.item.name))
|
972
866
|
sys.stdout.flush()
|
973
867
|
except KeyboardInterrupt:
|
974
868
|
# Help debugging by printing some information:
|
975
|
-
print
|
869
|
+
print(
|
976
870
|
('\nAllowed parallel jobs: %d\n# queued: %d\nRan: %s\n'
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
', '.join(self.ran),
|
981
|
-
len(self.running)))
|
871
|
+
'Running: %d') % (self.jobs, len(self.queued), ', '.join(
|
872
|
+
self.ran), len(self.running)),
|
873
|
+
file=sys.stderr)
|
982
874
|
for i in self.queued:
|
983
|
-
print
|
984
|
-
i.name, ', '.join(i.requirements))
|
875
|
+
print(
|
876
|
+
'%s (not started): %s' % (i.name, ', '.join(i.requirements)),
|
877
|
+
file=sys.stderr)
|
985
878
|
for i in self.running:
|
986
|
-
print
|
879
|
+
print(
|
880
|
+
self.format_task_output(i.item, 'interrupted'), file=sys.stderr)
|
987
881
|
raise
|
988
882
|
# Something happened: self.enqueue() or a thread terminated. Loop again.
|
989
883
|
finally:
|
@@ -992,12 +886,12 @@ class ExecutionQueue(object):
|
|
992
886
|
assert not self.running, 'Now guaranteed to be single-threaded'
|
993
887
|
if not self.exceptions.empty():
|
994
888
|
if self.progress:
|
995
|
-
print
|
889
|
+
print('')
|
996
890
|
# To get back the stack location correctly, the raise a, b, c form must be
|
997
891
|
# used, passing a tuple as the first argument doesn't work.
|
998
892
|
e, task = self.exceptions.get()
|
999
|
-
print
|
1000
|
-
|
893
|
+
print(self.format_task_output(task.item, 'ERROR'), file=sys.stderr)
|
894
|
+
reraise(e[0], e[1], e[2])
|
1001
895
|
elif self.progress:
|
1002
896
|
self.progress.end()
|
1003
897
|
|
@@ -1013,7 +907,7 @@ class ExecutionQueue(object):
|
|
1013
907
|
self.last_join = datetime.datetime.now()
|
1014
908
|
sys.stdout.flush()
|
1015
909
|
if self.verbose:
|
1016
|
-
print
|
910
|
+
print(self.format_task_output(t.item))
|
1017
911
|
if self.progress:
|
1018
912
|
self.progress.update(1, t.item.name)
|
1019
913
|
if t.item.name in self.ran:
|
@@ -1035,22 +929,24 @@ class ExecutionQueue(object):
|
|
1035
929
|
# exception.
|
1036
930
|
try:
|
1037
931
|
task_item.start = datetime.datetime.now()
|
1038
|
-
print
|
932
|
+
print('[%s] Started.' % Elapsed(task_item.start), file=task_item.outbuf)
|
1039
933
|
task_item.run(*args, **kwargs)
|
1040
934
|
task_item.finish = datetime.datetime.now()
|
1041
|
-
print
|
935
|
+
print(
|
936
|
+
'[%s] Finished.' % Elapsed(task_item.finish), file=task_item.outbuf)
|
1042
937
|
self.ran.append(task_item.name)
|
1043
938
|
if self.verbose:
|
1044
939
|
if self.progress:
|
1045
|
-
print
|
1046
|
-
print
|
940
|
+
print('')
|
941
|
+
print(self.format_task_output(task_item))
|
1047
942
|
if self.progress:
|
1048
943
|
self.progress.update(1, ', '.join(t.item.name for t in self.running))
|
1049
944
|
except KeyboardInterrupt:
|
1050
|
-
print
|
945
|
+
print(
|
946
|
+
self.format_task_output(task_item, 'interrupted'), file=sys.stderr)
|
1051
947
|
raise
|
1052
948
|
except Exception:
|
1053
|
-
print
|
949
|
+
print(self.format_task_output(task_item, 'ERROR'), file=sys.stderr)
|
1054
950
|
raise
|
1055
951
|
|
1056
952
|
|
@@ -1071,10 +967,11 @@ class ExecutionQueue(object):
|
|
1071
967
|
work_queue = self.kwargs['work_queue']
|
1072
968
|
try:
|
1073
969
|
self.item.start = datetime.datetime.now()
|
1074
|
-
print
|
970
|
+
print('[%s] Started.' % Elapsed(self.item.start), file=self.item.outbuf)
|
1075
971
|
self.item.run(*self.args, **self.kwargs)
|
1076
972
|
self.item.finish = datetime.datetime.now()
|
1077
|
-
print
|
973
|
+
print(
|
974
|
+
'[%s] Finished.' % Elapsed(self.item.finish), file=self.item.outbuf)
|
1078
975
|
except KeyboardInterrupt:
|
1079
976
|
logging.info('Caught KeyboardInterrupt in thread %s', self.item.name)
|
1080
977
|
logging.info(str(sys.exc_info()))
|
@@ -1125,8 +1022,8 @@ def RunEditor(content, git, git_editor=None):
|
|
1125
1022
|
file_handle, filename = tempfile.mkstemp(text=True, prefix='cl_description')
|
1126
1023
|
# Make sure CRLF is handled properly by requiring none.
|
1127
1024
|
if '\r' in content:
|
1128
|
-
print
|
1129
|
-
'!! Please remove \\r from your change description !!')
|
1025
|
+
print(
|
1026
|
+
'!! Please remove \\r from your change description !!', file=sys.stderr)
|
1130
1027
|
fileobj = os.fdopen(file_handle, 'w')
|
1131
1028
|
# Still remove \r if present.
|
1132
1029
|
content = re.sub('\r?\n', '\n', content)
|
@@ -1279,7 +1176,7 @@ def freeze(obj):
|
|
1279
1176
|
Will raise TypeError if you pass an object which is not hashable.
|
1280
1177
|
"""
|
1281
1178
|
if isinstance(obj, collections.Mapping):
|
1282
|
-
return FrozenDict((freeze(k), freeze(v)) for k, v in obj.
|
1179
|
+
return FrozenDict((freeze(k), freeze(v)) for k, v in obj.items())
|
1283
1180
|
elif isinstance(obj, (list, tuple)):
|
1284
1181
|
return tuple(freeze(i) for i in obj)
|
1285
1182
|
elif isinstance(obj, set):
|
@@ -1299,8 +1196,8 @@ class FrozenDict(collections.Mapping):
|
|
1299
1196
|
|
1300
1197
|
# Calculate the hash immediately so that we know all the items are
|
1301
1198
|
# hashable too.
|
1302
|
-
self._hash = reduce(
|
1303
|
-
|
1199
|
+
self._hash = functools.reduce(
|
1200
|
+
operator.xor, (hash(i) for i in enumerate(self._d.items())), 0)
|
1304
1201
|
|
1305
1202
|
def __eq__(self, other):
|
1306
1203
|
if not isinstance(other, collections.Mapping):
|