libv8 7.3.492.27.1 → 8.4.255.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +11 -14
- data/CHANGELOG.md +10 -0
- data/README.md +10 -11
- data/Rakefile +30 -36
- data/ext/libv8/builder.rb +1 -1
- data/lib/libv8/version.rb +1 -1
- data/libv8.gemspec +1 -3
- data/vendor/depot_tools/{cipd.ps1 → .cipd_impl.ps1} +0 -0
- data/vendor/depot_tools/.gitattributes +1 -1
- data/vendor/depot_tools/.gitignore +7 -2
- data/vendor/depot_tools/.style.yapf +3 -1
- data/vendor/depot_tools/.vpython +55 -0
- data/vendor/depot_tools/.vpython3 +23 -0
- data/vendor/depot_tools/CROS_OWNERS +3 -1
- data/vendor/depot_tools/GOMA_OWNERS +9 -0
- data/vendor/depot_tools/LUCI_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +21 -6
- data/vendor/depot_tools/PRESUBMIT.py +35 -18
- data/vendor/depot_tools/README.git-cl.md +0 -14
- data/vendor/depot_tools/README.md +1 -1
- data/vendor/depot_tools/WATCHLISTS +2 -2
- data/vendor/depot_tools/auth.py +60 -772
- data/vendor/depot_tools/autoninja +12 -6
- data/vendor/depot_tools/autoninja.bat +14 -6
- data/vendor/depot_tools/autoninja.py +64 -27
- data/vendor/depot_tools/bb +1 -1
- data/vendor/depot_tools/bootstrap/{win/README.md → README.md} +28 -14
- data/vendor/depot_tools/bootstrap/{win/win_tools.py → bootstrap.py} +60 -43
- data/vendor/depot_tools/bootstrap/{win/git-bash.template.sh → git-bash.template.sh} +1 -1
- data/vendor/depot_tools/bootstrap/{win/git.template.bat → git.template.bat} +0 -0
- data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
- data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
- data/vendor/depot_tools/bootstrap/{win/profile.d.python.sh → profile.d.python.sh} +0 -0
- data/vendor/depot_tools/bootstrap/{win/python27.bleeding_edge.bat → python27.bat} +0 -0
- data/vendor/depot_tools/bootstrap/{win/python27.new.bat → python3.bat} +3 -3
- data/vendor/depot_tools/bootstrap/{win/win_tools.bat → win_tools.bat} +21 -16
- data/vendor/depot_tools/bootstrap_python3 +35 -0
- data/vendor/depot_tools/cbuildbot +1 -1
- data/vendor/depot_tools/chrome_set_ver +1 -1
- data/vendor/depot_tools/cipd +43 -39
- data/vendor/depot_tools/cipd.bat +2 -2
- data/vendor/depot_tools/cipd_client_version +1 -1
- data/vendor/depot_tools/cipd_client_version.digests +15 -14
- data/vendor/depot_tools/cipd_manifest.txt +31 -8
- data/vendor/depot_tools/cipd_manifest.versions +278 -158
- data/vendor/depot_tools/cit.py +9 -7
- data/vendor/depot_tools/clang_format.py +4 -1
- data/vendor/depot_tools/clang_format_merge_driver.py +10 -8
- data/vendor/depot_tools/compile_single_file.py +7 -2
- data/vendor/depot_tools/cpplint.py +51 -45
- data/vendor/depot_tools/cros +87 -0
- data/vendor/depot_tools/cros_sdk +1 -1
- data/vendor/depot_tools/crosjobs +13 -0
- data/vendor/depot_tools/detect_host_arch.py +0 -1
- data/vendor/depot_tools/dirmd +12 -0
- data/vendor/depot_tools/dirmd.bat +7 -0
- data/vendor/depot_tools/download_from_google_storage.py +47 -27
- data/vendor/depot_tools/ensure_bootstrap +14 -0
- data/vendor/depot_tools/fetch +14 -1
- data/vendor/depot_tools/fetch.bat +14 -1
- data/vendor/depot_tools/fetch.py +5 -7
- data/vendor/depot_tools/fetch_configs/chromium.py +6 -4
- data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
- data/vendor/depot_tools/fetch_configs/ios_internal.py +10 -19
- data/vendor/depot_tools/fix_encoding.py +19 -5
- data/vendor/depot_tools/gclient +28 -12
- data/vendor/depot_tools/gclient-new-workdir.py +2 -0
- data/vendor/depot_tools/gclient.bat +18 -1
- data/vendor/depot_tools/gclient.py +160 -119
- data/vendor/depot_tools/gclient_eval.py +119 -107
- data/vendor/depot_tools/gclient_paths.py +67 -57
- data/vendor/depot_tools/gclient_scm.py +181 -159
- data/vendor/depot_tools/gclient_utils.py +177 -124
- data/vendor/depot_tools/gerrit_client.py +21 -13
- data/vendor/depot_tools/gerrit_util.py +188 -228
- data/vendor/depot_tools/git-cache +1 -1
- data/vendor/depot_tools/git-cl +1 -1
- data/vendor/depot_tools/git-drover +1 -1
- data/vendor/depot_tools/git-find-releases +1 -1
- data/vendor/depot_tools/git-footers +1 -1
- data/vendor/depot_tools/git-freeze +1 -1
- data/vendor/depot_tools/git-hyper-blame +1 -1
- data/vendor/depot_tools/git-map +1 -1
- data/vendor/depot_tools/git-map-branches +1 -1
- data/vendor/depot_tools/git-mark-merge-base +1 -1
- data/vendor/depot_tools/git-nav-downstream +1 -1
- data/vendor/depot_tools/git-new-branch +1 -1
- data/vendor/depot_tools/git-number +1 -1
- data/vendor/depot_tools/git-rebase-update +1 -1
- data/vendor/depot_tools/git-rename-branch +1 -1
- data/vendor/depot_tools/git-reparent-branch +1 -1
- data/vendor/depot_tools/git-retry +1 -1
- data/vendor/depot_tools/git-squash-branch +1 -1
- data/vendor/depot_tools/git-thaw +1 -1
- data/vendor/depot_tools/git-upstream-diff +1 -1
- data/vendor/depot_tools/git_cache.py +255 -360
- data/vendor/depot_tools/git_cl.py +1562 -2059
- data/vendor/depot_tools/git_cl_completion.sh +16 -2
- data/vendor/depot_tools/git_common.py +77 -32
- data/vendor/depot_tools/git_drover.py +17 -8
- data/vendor/depot_tools/git_find_releases.py +11 -9
- data/vendor/depot_tools/git_footers.py +13 -9
- data/vendor/depot_tools/git_freezer.py +3 -1
- data/vendor/depot_tools/git_hyper_blame.py +25 -32
- data/vendor/depot_tools/git_map.py +115 -93
- data/vendor/depot_tools/git_map_branches.py +11 -10
- data/vendor/depot_tools/git_mark_merge_base.py +8 -6
- data/vendor/depot_tools/git_nav_downstream.py +9 -6
- data/vendor/depot_tools/git_new_branch.py +39 -33
- data/vendor/depot_tools/git_number.py +28 -17
- data/vendor/depot_tools/git_rebase_update.py +50 -49
- data/vendor/depot_tools/git_rename_branch.py +2 -2
- data/vendor/depot_tools/git_reparent_branch.py +8 -6
- data/vendor/depot_tools/git_upstream_diff.py +4 -2
- data/vendor/depot_tools/gn.py +6 -4
- data/vendor/depot_tools/goma_auth +12 -0
- data/vendor/depot_tools/goma_auth.bat +8 -0
- data/vendor/depot_tools/goma_ctl +12 -0
- data/vendor/depot_tools/goma_ctl.bat +8 -0
- data/vendor/depot_tools/gsutil.py +5 -2
- data/vendor/depot_tools/gsutil.py.bat +8 -0
- data/vendor/depot_tools/gsutil.vpython +3 -1
- data/vendor/depot_tools/infra/config/OWNERS +2 -2
- data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
- data/vendor/depot_tools/led +1 -1
- data/vendor/depot_tools/lockfile.py +116 -0
- data/vendor/depot_tools/luci-auth +1 -1
- data/vendor/depot_tools/lucicfg +1 -1
- data/vendor/depot_tools/mac_toolchain +1 -1
- data/vendor/depot_tools/man/html/depot_tools.html +1 -1
- data/vendor/depot_tools/man/html/depot_tools_tutorial.html +31 -25
- data/vendor/depot_tools/man/html/git-cl.html +1 -1
- data/vendor/depot_tools/man/html/git-drover.html +18 -18
- data/vendor/depot_tools/man/html/git-footers.html +1 -1
- data/vendor/depot_tools/man/html/git-freeze.html +3 -3
- data/vendor/depot_tools/man/html/git-hyper-blame.html +1 -1
- data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
- data/vendor/depot_tools/man/html/git-map.html +1 -1
- data/vendor/depot_tools/man/html/git-mark-merge-base.html +1 -1
- data/vendor/depot_tools/man/html/git-nav-downstream.html +3 -3
- data/vendor/depot_tools/man/html/git-nav-upstream.html +12 -6
- data/vendor/depot_tools/man/html/git-new-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-rebase-update.html +20 -1
- data/vendor/depot_tools/man/html/git-rename-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-reparent-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-retry.html +1 -1
- data/vendor/depot_tools/man/html/git-squash-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-thaw.html +1 -1
- data/vendor/depot_tools/man/html/git-upstream-diff.html +10 -6
- data/vendor/depot_tools/man/man1/git-cl.1 +4 -4
- data/vendor/depot_tools/man/man1/git-drover.1 +21 -21
- data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
- data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
- data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
- data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
- data/vendor/depot_tools/man/man1/git-map.1 +4 -4
- data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
- data/vendor/depot_tools/man/man1/git-nav-downstream.1 +6 -6
- data/vendor/depot_tools/man/man1/git-nav-upstream.1 +15 -9
- data/vendor/depot_tools/man/man1/git-new-branch.1 +3 -3
- data/vendor/depot_tools/man/man1/git-rebase-update.1 +14 -4
- data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-retry.1 +4 -4
- data/vendor/depot_tools/man/man1/git-squash-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
- data/vendor/depot_tools/man/man1/git-upstream-diff.1 +7 -13
- data/vendor/depot_tools/man/man7/depot_tools.7 +4 -4
- data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +31 -25
- data/vendor/depot_tools/man/src/common_demo_functions.sh +2 -2
- data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +3 -3
- data/vendor/depot_tools/man/src/filter_demo_output.py +4 -2
- data/vendor/depot_tools/man/src/git-new-branch.txt +2 -1
- data/vendor/depot_tools/man/src/git-rebase-update.txt +8 -1
- data/vendor/depot_tools/metrics.README.md +8 -5
- data/vendor/depot_tools/metrics.py +7 -6
- data/vendor/depot_tools/metrics_utils.py +4 -14
- data/vendor/depot_tools/my_activity.py +85 -251
- data/vendor/depot_tools/ninja +1 -0
- data/vendor/depot_tools/ninja-mac +0 -0
- data/vendor/depot_tools/ninjalog_uploader.py +146 -145
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +69 -60
- data/vendor/depot_tools/owners.py +156 -43
- data/vendor/depot_tools/owners_finder.py +28 -14
- data/vendor/depot_tools/post_build_ninja_summary.py +76 -48
- data/vendor/depot_tools/presubmit_canned_checks.py +293 -106
- data/vendor/depot_tools/presubmit_support.py +527 -333
- data/vendor/depot_tools/prpc +1 -1
- data/vendor/depot_tools/pylint +2 -12
- data/vendor/depot_tools/pylint-1.5 +78 -0
- data/vendor/depot_tools/pylint-1.6 +78 -0
- data/vendor/depot_tools/pylint-1.7 +78 -0
- data/vendor/depot_tools/pylint-1.8 +78 -0
- data/vendor/depot_tools/pylint-1.9 +78 -0
- data/vendor/depot_tools/{depot-tools-auth.bat → pylint.bat} +2 -2
- data/vendor/depot_tools/pylint_main.py +45 -0
- data/vendor/depot_tools/pylintrc +14 -1
- data/vendor/depot_tools/python-bin/python3 +7 -0
- data/vendor/depot_tools/python_runner.sh +13 -8
- data/vendor/depot_tools/rdb +12 -0
- data/vendor/depot_tools/rdb.bat +7 -0
- data/vendor/depot_tools/recipes/OWNERS +0 -1
- data/vendor/depot_tools/recipes/README.recipes.md +218 -151
- data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +17 -16
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +127 -78
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +19 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +18 -3
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +19 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +28 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{with_manifest_name.json → no_cp_checkout_HEAD.json} +25 -15
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +17 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +41 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +24 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +38 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +36 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +0 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +95 -22
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +187 -114
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +2 -4
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +26 -6
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +23 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +23 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +4 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +4 -2
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +3 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +4 -2
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +82 -13
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +23 -11
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +3 -4
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +3 -6
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +3 -4
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +7 -7
- data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +4 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +9 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +7 -12
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +0 -2
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +9 -17
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +3 -13
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +4 -12
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +2 -10
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +1 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +1 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +0 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +3 -10
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +3 -11
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +3 -13
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +0 -5
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +7 -13
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +21 -16
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +1 -2
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +23 -8
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +52 -1
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +15 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +32 -8
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +5 -4
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +21 -2
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +20 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +235 -3
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +13 -5
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +5 -1
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +33 -45
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +64 -21
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +64 -21
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +1 -22
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +1 -22
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +5 -32
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +1 -6
- data/vendor/depot_tools/recipes/recipes.py +49 -28
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +11 -6
- data/vendor/depot_tools/repo +698 -540
- data/vendor/depot_tools/roll-dep +14 -1
- data/vendor/depot_tools/roll-dep.bat +10 -1
- data/vendor/depot_tools/roll_dep.py +15 -10
- data/vendor/depot_tools/scm.py +95 -75
- data/vendor/depot_tools/setup_color.py +36 -2
- data/vendor/depot_tools/split_cl.py +44 -32
- data/vendor/depot_tools/subcommand.py +6 -6
- data/vendor/depot_tools/subprocess2.py +38 -322
- data/vendor/depot_tools/third_party/colorama/LICENSE.txt +0 -1
- data/vendor/depot_tools/third_party/colorama/README.chromium +4 -5
- data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
- data/vendor/depot_tools/third_party/colorama/__init__.py +3 -4
- data/vendor/depot_tools/third_party/colorama/ansi.py +82 -30
- data/vendor/depot_tools/third_party/colorama/ansitowin32.py +105 -37
- data/vendor/depot_tools/third_party/colorama/initialise.py +39 -15
- data/vendor/depot_tools/third_party/colorama/win32.py +46 -28
- data/vendor/depot_tools/third_party/colorama/winterm.py +80 -31
- data/vendor/depot_tools/update_depot_tools +18 -8
- data/vendor/depot_tools/update_depot_tools.bat +19 -15
- data/vendor/depot_tools/upload_metrics.py +7 -6
- data/vendor/depot_tools/upload_to_google_storage.py +23 -16
- data/vendor/depot_tools/vpython +4 -4
- data/vendor/depot_tools/vpython.bat +1 -1
- data/vendor/depot_tools/vpython3 +55 -0
- data/vendor/depot_tools/vpython3.bat +12 -0
- data/vendor/depot_tools/watchlists.py +14 -11
- data/vendor/depot_tools/weekly +4 -2
- data/vendor/depot_tools/win32imports.py +61 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +49 -41
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +142 -149
- data/vendor/depot_tools/wtf +5 -3
- data/vendor/depot_tools/yapf +5 -1
- metadata +68 -343
- data/vendor/depot_tools/README.testing +0 -23
- data/vendor/depot_tools/annotated_gclient.py +0 -89
- data/vendor/depot_tools/appengine_mapper.py +0 -23
- data/vendor/depot_tools/bootstrap/win/manifest.txt +0 -20
- data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +0 -20
- data/vendor/depot_tools/bootstrap/win/pylint.new.bat +0 -7
- data/vendor/depot_tools/buildbucket.py +0 -186
- data/vendor/depot_tools/checkout.py +0 -431
- data/vendor/depot_tools/cros +0 -1
- data/vendor/depot_tools/dart_format.py +0 -58
- data/vendor/depot_tools/depot-tools-auth +0 -8
- data/vendor/depot_tools/depot-tools-auth.py +0 -102
- data/vendor/depot_tools/my_reviews.py +0 -396
- data/vendor/depot_tools/patch.py +0 -548
- data/vendor/depot_tools/pylint.py +0 -30
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +0 -239
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +0 -222
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/__init__.py +0 -4
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/api.py +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.py +0 -33
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +0 -66
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +0 -11
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +0 -45
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +0 -45
- data/vendor/depot_tools/rietveld.py +0 -779
- data/vendor/depot_tools/roll-dep-svn +0 -8
- data/vendor/depot_tools/roll-dep-svn.bat +0 -12
- data/vendor/depot_tools/roll_dep_svn.py +0 -430
- data/vendor/depot_tools/support/chromite_wrapper +0 -96
- data/vendor/depot_tools/third_party/boto/LICENSE +0 -18
- data/vendor/depot_tools/third_party/boto/README.chromium +0 -43
- data/vendor/depot_tools/third_party/boto/README.rst +0 -163
- data/vendor/depot_tools/third_party/boto/__init__.py +0 -793
- data/vendor/depot_tools/third_party/boto/auth.py +0 -682
- data/vendor/depot_tools/third_party/boto/auth_handler.py +0 -58
- data/vendor/depot_tools/third_party/boto/cacerts/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/cacerts/cacerts.txt +0 -2183
- data/vendor/depot_tools/third_party/boto/compat.py +0 -28
- data/vendor/depot_tools/third_party/boto/connection.py +0 -1081
- data/vendor/depot_tools/third_party/boto/contrib/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/contrib/ymlmessage.py +0 -52
- data/vendor/depot_tools/third_party/boto/core/README +0 -58
- data/vendor/depot_tools/third_party/boto/core/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/core/auth.py +0 -78
- data/vendor/depot_tools/third_party/boto/core/credentials.py +0 -154
- data/vendor/depot_tools/third_party/boto/core/dictresponse.py +0 -178
- data/vendor/depot_tools/third_party/boto/core/service.py +0 -67
- data/vendor/depot_tools/third_party/boto/datapipeline/__init__.py +0 -0
- data/vendor/depot_tools/third_party/boto/datapipeline/exceptions.py +0 -42
- data/vendor/depot_tools/third_party/boto/datapipeline/layer1.py +0 -546
- data/vendor/depot_tools/third_party/boto/ecs/__init__.py +0 -90
- data/vendor/depot_tools/third_party/boto/ecs/item.py +0 -153
- data/vendor/depot_tools/third_party/boto/exception.py +0 -476
- data/vendor/depot_tools/third_party/boto/file/README +0 -49
- data/vendor/depot_tools/third_party/boto/file/__init__.py +0 -28
- data/vendor/depot_tools/third_party/boto/file/bucket.py +0 -112
- data/vendor/depot_tools/third_party/boto/file/connection.py +0 -33
- data/vendor/depot_tools/third_party/boto/file/key.py +0 -199
- data/vendor/depot_tools/third_party/boto/file/simpleresultset.py +0 -30
- data/vendor/depot_tools/third_party/boto/fps/__init__.py +0 -21
- data/vendor/depot_tools/third_party/boto/fps/connection.py +0 -369
- data/vendor/depot_tools/third_party/boto/fps/exception.py +0 -344
- data/vendor/depot_tools/third_party/boto/fps/response.py +0 -175
- data/vendor/depot_tools/third_party/boto/gs/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/gs/acl.py +0 -304
- data/vendor/depot_tools/third_party/boto/gs/bucket.py +0 -870
- data/vendor/depot_tools/third_party/boto/gs/bucketlistresultset.py +0 -64
- data/vendor/depot_tools/third_party/boto/gs/connection.py +0 -103
- data/vendor/depot_tools/third_party/boto/gs/cors.py +0 -169
- data/vendor/depot_tools/third_party/boto/gs/key.py +0 -704
- data/vendor/depot_tools/third_party/boto/gs/resumable_upload_handler.py +0 -659
- data/vendor/depot_tools/third_party/boto/gs/user.py +0 -54
- data/vendor/depot_tools/third_party/boto/handler.py +0 -44
- data/vendor/depot_tools/third_party/boto/https_connection.py +0 -124
- data/vendor/depot_tools/third_party/boto/jsonresponse.py +0 -163
- data/vendor/depot_tools/third_party/boto/manage/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/manage/cmdshell.py +0 -241
- data/vendor/depot_tools/third_party/boto/manage/propget.py +0 -64
- data/vendor/depot_tools/third_party/boto/manage/server.py +0 -556
- data/vendor/depot_tools/third_party/boto/manage/task.py +0 -175
- data/vendor/depot_tools/third_party/boto/manage/test_manage.py +0 -34
- data/vendor/depot_tools/third_party/boto/manage/volume.py +0 -420
- data/vendor/depot_tools/third_party/boto/mashups/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/mashups/interactive.py +0 -97
- data/vendor/depot_tools/third_party/boto/mashups/iobject.py +0 -115
- data/vendor/depot_tools/third_party/boto/mashups/order.py +0 -211
- data/vendor/depot_tools/third_party/boto/mashups/server.py +0 -395
- data/vendor/depot_tools/third_party/boto/plugin.py +0 -90
- data/vendor/depot_tools/third_party/boto/provider.py +0 -337
- data/vendor/depot_tools/third_party/boto/pyami/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/pyami/bootstrap.py +0 -134
- data/vendor/depot_tools/third_party/boto/pyami/config.py +0 -229
- data/vendor/depot_tools/third_party/boto/pyami/copybot.cfg +0 -60
- data/vendor/depot_tools/third_party/boto/pyami/copybot.py +0 -97
- data/vendor/depot_tools/third_party/boto/pyami/helloworld.py +0 -28
- data/vendor/depot_tools/third_party/boto/pyami/launch_ami.py +0 -178
- data/vendor/depot_tools/third_party/boto/pyami/scriptbase.py +0 -44
- data/vendor/depot_tools/third_party/boto/pyami/startup.py +0 -60
- data/vendor/depot_tools/third_party/boto/regioninfo.py +0 -63
- data/vendor/depot_tools/third_party/boto/resultset.py +0 -169
- data/vendor/depot_tools/third_party/boto/roboto/__init__.py +0 -1
- data/vendor/depot_tools/third_party/boto/roboto/awsqueryrequest.py +0 -504
- data/vendor/depot_tools/third_party/boto/roboto/awsqueryservice.py +0 -121
- data/vendor/depot_tools/third_party/boto/roboto/param.py +0 -147
- data/vendor/depot_tools/third_party/boto/s3/__init__.py +0 -84
- data/vendor/depot_tools/third_party/boto/s3/acl.py +0 -164
- data/vendor/depot_tools/third_party/boto/s3/bucket.py +0 -1634
- data/vendor/depot_tools/third_party/boto/s3/bucketlistresultset.py +0 -139
- data/vendor/depot_tools/third_party/boto/s3/bucketlogging.py +0 -83
- data/vendor/depot_tools/third_party/boto/s3/connection.py +0 -540
- data/vendor/depot_tools/third_party/boto/s3/cors.py +0 -210
- data/vendor/depot_tools/third_party/boto/s3/deletemarker.py +0 -55
- data/vendor/depot_tools/third_party/boto/s3/key.py +0 -1712
- data/vendor/depot_tools/third_party/boto/s3/keyfile.py +0 -134
- data/vendor/depot_tools/third_party/boto/s3/lifecycle.py +0 -231
- data/vendor/depot_tools/third_party/boto/s3/multidelete.py +0 -138
- data/vendor/depot_tools/third_party/boto/s3/multipart.py +0 -315
- data/vendor/depot_tools/third_party/boto/s3/prefix.py +0 -42
- data/vendor/depot_tools/third_party/boto/s3/resumable_download_handler.py +0 -339
- data/vendor/depot_tools/third_party/boto/s3/tagging.py +0 -71
- data/vendor/depot_tools/third_party/boto/s3/user.py +0 -49
- data/vendor/depot_tools/third_party/boto/s3/website.py +0 -237
- data/vendor/depot_tools/third_party/boto/services/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/services/bs.py +0 -179
- data/vendor/depot_tools/third_party/boto/services/message.py +0 -58
- data/vendor/depot_tools/third_party/boto/services/result.py +0 -136
- data/vendor/depot_tools/third_party/boto/services/service.py +0 -161
- data/vendor/depot_tools/third_party/boto/services/servicedef.py +0 -91
- data/vendor/depot_tools/third_party/boto/services/sonofmmm.cfg +0 -43
- data/vendor/depot_tools/third_party/boto/services/sonofmmm.py +0 -81
- data/vendor/depot_tools/third_party/boto/services/submit.py +0 -88
- data/vendor/depot_tools/third_party/boto/ses/__init__.py +0 -54
- data/vendor/depot_tools/third_party/boto/ses/connection.py +0 -521
- data/vendor/depot_tools/third_party/boto/ses/exceptions.py +0 -77
- data/vendor/depot_tools/third_party/boto/storage_uri.py +0 -835
- data/vendor/depot_tools/third_party/boto/sts/__init__.py +0 -55
- data/vendor/depot_tools/third_party/boto/sts/connection.py +0 -207
- data/vendor/depot_tools/third_party/boto/sts/credentials.py +0 -215
- data/vendor/depot_tools/third_party/boto/utils.py +0 -927
- data/vendor/depot_tools/third_party/colorama/README.txt +0 -304
- data/vendor/depot_tools/third_party/fancy_urllib/README +0 -22
- data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +0 -460
- data/vendor/depot_tools/third_party/logilab/README.chromium +0 -6
- data/vendor/depot_tools/third_party/logilab/__init__.py +0 -0
- data/vendor/depot_tools/third_party/logilab/astroid/LICENSE.txt +0 -340
- data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +0 -136
- data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +0 -42
- data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +0 -233
- data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +0 -548
- data/vendor/depot_tools/third_party/logilab/astroid/astpeephole.py +0 -86
- data/vendor/depot_tools/third_party/logilab/astroid/bases.py +0 -636
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_builtin_inference.py +0 -336
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +0 -15
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_gi.py +0 -195
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_mechanize.py +0 -18
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_nose.py +0 -82
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +0 -62
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +0 -76
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +0 -44
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_six.py +0 -288
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +0 -65
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +0 -473
- data/vendor/depot_tools/third_party/logilab/astroid/builder.py +0 -263
- data/vendor/depot_tools/third_party/logilab/astroid/context.py +0 -81
- data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +0 -75
- data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +0 -71
- data/vendor/depot_tools/third_party/logilab/astroid/inference.py +0 -359
- data/vendor/depot_tools/third_party/logilab/astroid/manager.py +0 -267
- data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +0 -147
- data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +0 -741
- data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +0 -1053
- data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +0 -87
- data/vendor/depot_tools/third_party/logilab/astroid/objects.py +0 -186
- data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +0 -470
- data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +0 -390
- data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +0 -989
- data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +0 -1716
- data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +0 -201
- data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +0 -96
- data/vendor/depot_tools/third_party/logilab/astroid/util.py +0 -89
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +0 -19
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +0 -20
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +0 -1421
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +0 -9
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +0 -246
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +0 -414
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +0 -13
- data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +0 -24
- data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +0 -19
- data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +0 -2729
- data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +0 -96
- data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +0 -512
- data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +0 -228
- data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +0 -901
- data/vendor/depot_tools/third_party/mock/LICENSE.txt +0 -26
- data/vendor/depot_tools/third_party/mock/README.chromium +0 -24
- data/vendor/depot_tools/third_party/mock/__init__.py +0 -2366
- data/vendor/depot_tools/third_party/oauth2client/LICENSE +0 -202
- data/vendor/depot_tools/third_party/oauth2client/MODIFICATIONS.diff +0 -66
- data/vendor/depot_tools/third_party/oauth2client/README.chromium +0 -15
- data/vendor/depot_tools/third_party/oauth2client/__init__.py +0 -5
- data/vendor/depot_tools/third_party/oauth2client/anyjson.py +0 -32
- data/vendor/depot_tools/third_party/oauth2client/appengine.py +0 -963
- data/vendor/depot_tools/third_party/oauth2client/client.py +0 -1363
- data/vendor/depot_tools/third_party/oauth2client/clientsecrets.py +0 -153
- data/vendor/depot_tools/third_party/oauth2client/crypt.py +0 -377
- data/vendor/depot_tools/third_party/oauth2client/django_orm.py +0 -134
- data/vendor/depot_tools/third_party/oauth2client/file.py +0 -124
- data/vendor/depot_tools/third_party/oauth2client/gce.py +0 -90
- data/vendor/depot_tools/third_party/oauth2client/keyring_storage.py +0 -109
- data/vendor/depot_tools/third_party/oauth2client/locked_file.py +0 -373
- data/vendor/depot_tools/third_party/oauth2client/multistore_file.py +0 -465
- data/vendor/depot_tools/third_party/oauth2client/old_run.py +0 -160
- data/vendor/depot_tools/third_party/oauth2client/tools.py +0 -243
- data/vendor/depot_tools/third_party/oauth2client/util.py +0 -196
- data/vendor/depot_tools/third_party/oauth2client/xsrfutil.py +0 -113
- data/vendor/depot_tools/third_party/protobuf26/README.chromium +0 -23
- data/vendor/depot_tools/third_party/protobuf26/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/compiler/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/compiler/plugin_pb2.py +0 -184
- data/vendor/depot_tools/third_party/protobuf26/descriptor.py +0 -849
- data/vendor/depot_tools/third_party/protobuf26/descriptor_database.py +0 -137
- data/vendor/depot_tools/third_party/protobuf26/descriptor_pb2.py +0 -1522
- data/vendor/depot_tools/third_party/protobuf26/descriptor_pool.py +0 -643
- data/vendor/depot_tools/third_party/protobuf26/internal/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/internal/api_implementation.py +0 -89
- data/vendor/depot_tools/third_party/protobuf26/internal/containers.py +0 -269
- data/vendor/depot_tools/third_party/protobuf26/internal/cpp_message.py +0 -663
- data/vendor/depot_tools/third_party/protobuf26/internal/decoder.py +0 -831
- data/vendor/depot_tools/third_party/protobuf26/internal/encoder.py +0 -788
- data/vendor/depot_tools/third_party/protobuf26/internal/enum_type_wrapper.py +0 -89
- data/vendor/depot_tools/third_party/protobuf26/internal/message_listener.py +0 -78
- data/vendor/depot_tools/third_party/protobuf26/internal/python_message.py +0 -1247
- data/vendor/depot_tools/third_party/protobuf26/internal/type_checkers.py +0 -328
- data/vendor/depot_tools/third_party/protobuf26/internal/wire_format.py +0 -268
- data/vendor/depot_tools/third_party/protobuf26/message.py +0 -284
- data/vendor/depot_tools/third_party/protobuf26/message_factory.py +0 -155
- data/vendor/depot_tools/third_party/protobuf26/reflection.py +0 -205
- data/vendor/depot_tools/third_party/protobuf26/service.py +0 -226
- data/vendor/depot_tools/third_party/protobuf26/service_reflection.py +0 -284
- data/vendor/depot_tools/third_party/protobuf26/symbol_database.py +0 -185
- data/vendor/depot_tools/third_party/protobuf26/text_encoding.py +0 -110
- data/vendor/depot_tools/third_party/protobuf26/text_format.py +0 -873
- data/vendor/depot_tools/third_party/pylint.py +0 -37
- data/vendor/depot_tools/third_party/pylint/LICENSE.txt +0 -340
- data/vendor/depot_tools/third_party/pylint/README.chromium +0 -30
- data/vendor/depot_tools/third_party/pylint/__init__.py +0 -46
- data/vendor/depot_tools/third_party/pylint/__main__.py +0 -3
- data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +0 -80
- data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +0 -123
- data/vendor/depot_tools/third_party/pylint/checkers/async.py +0 -82
- data/vendor/depot_tools/third_party/pylint/checkers/base.py +0 -2010
- data/vendor/depot_tools/third_party/pylint/checkers/classes.py +0 -1120
- data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +0 -348
- data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +0 -369
- data/vendor/depot_tools/third_party/pylint/checkers/format.py +0 -993
- data/vendor/depot_tools/third_party/pylint/checkers/imports.py +0 -654
- data/vendor/depot_tools/third_party/pylint/checkers/logging.py +0 -258
- data/vendor/depot_tools/third_party/pylint/checkers/misc.py +0 -105
- data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +0 -169
- data/vendor/depot_tools/third_party/pylint/checkers/python3.py +0 -591
- data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +0 -129
- data/vendor/depot_tools/third_party/pylint/checkers/similar.py +0 -371
- data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +0 -264
- data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +0 -280
- data/vendor/depot_tools/third_party/pylint/checkers/strings.py +0 -618
- data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +0 -974
- data/vendor/depot_tools/third_party/pylint/checkers/utils.py +0 -741
- data/vendor/depot_tools/third_party/pylint/checkers/variables.py +0 -1191
- data/vendor/depot_tools/third_party/pylint/config.py +0 -820
- data/vendor/depot_tools/third_party/pylint/epylint.py +0 -181
- data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +0 -311
- data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +0 -62
- data/vendor/depot_tools/third_party/pylint/graph.py +0 -179
- data/vendor/depot_tools/third_party/pylint/gui.py +0 -531
- data/vendor/depot_tools/third_party/pylint/interfaces.py +0 -102
- data/vendor/depot_tools/third_party/pylint/lint.py +0 -1381
- data/vendor/depot_tools/third_party/pylint/pyreverse/__init__.py +0 -5
- data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +0 -230
- data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +0 -258
- data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +0 -372
- data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +0 -147
- data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +0 -210
- data/vendor/depot_tools/third_party/pylint/pyreverse/vcgutils.py +0 -198
- data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +0 -198
- data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +0 -149
- data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +0 -27
- data/vendor/depot_tools/third_party/pylint/reporters/html.py +0 -108
- data/vendor/depot_tools/third_party/pylint/reporters/json.py +0 -64
- data/vendor/depot_tools/third_party/pylint/reporters/text.py +0 -237
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +0 -106
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/html_writer.py +0 -93
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/nodes.py +0 -181
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/text_writer.py +0 -99
- data/vendor/depot_tools/third_party/pylint/testutils.py +0 -414
- data/vendor/depot_tools/third_party/pylint/utils.py +0 -1148
- data/vendor/depot_tools/third_party/pymox/COPYING +0 -202
- data/vendor/depot_tools/third_party/pymox/MANIFEST.in +0 -5
- data/vendor/depot_tools/third_party/pymox/README +0 -56
- data/vendor/depot_tools/third_party/pymox/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pymox/mox.py +0 -1643
- data/vendor/depot_tools/third_party/pymox/mox_test.py +0 -1708
- data/vendor/depot_tools/third_party/pymox/mox_test_helper.py +0 -76
- data/vendor/depot_tools/third_party/pymox/setup.py +0 -14
- data/vendor/depot_tools/third_party/pymox/stubout.py +0 -142
- data/vendor/depot_tools/third_party/pymox/stubout_test.py +0 -47
- data/vendor/depot_tools/third_party/pymox/stubout_testee.py +0 -2
- data/vendor/depot_tools/third_party/simplejson/LICENSE.txt +0 -19
- data/vendor/depot_tools/third_party/simplejson/PKG-INFO +0 -29
- data/vendor/depot_tools/third_party/simplejson/__init__.py +0 -437
- data/vendor/depot_tools/third_party/simplejson/decoder.py +0 -421
- data/vendor/depot_tools/third_party/simplejson/encoder.py +0 -501
- data/vendor/depot_tools/third_party/simplejson/ordered_dict.py +0 -119
- data/vendor/depot_tools/third_party/simplejson/scanner.py +0 -77
- data/vendor/depot_tools/third_party/simplejson/tool.py +0 -39
- data/vendor/depot_tools/third_party/upload.py +0 -2565
|
@@ -17,7 +17,14 @@
|
|
|
17
17
|
"--revision",
|
|
18
18
|
"depot_tools@HEAD"
|
|
19
19
|
],
|
|
20
|
-
"
|
|
20
|
+
"env": {
|
|
21
|
+
"GIT_HTTP_LOW_SPEED_LIMIT": "102400",
|
|
22
|
+
"GIT_HTTP_LOW_SPEED_TIME": "300"
|
|
23
|
+
},
|
|
24
|
+
"env_suffixes": {
|
|
25
|
+
"DEPOT_TOOLS_UPDATE": [
|
|
26
|
+
"0"
|
|
27
|
+
],
|
|
21
28
|
"PATH": [
|
|
22
29
|
"RECIPE_REPO[depot_tools]"
|
|
23
30
|
]
|
|
@@ -64,7 +71,7 @@
|
|
|
64
71
|
},
|
|
65
72
|
{
|
|
66
73
|
"cmd": [
|
|
67
|
-
"
|
|
74
|
+
"vpython",
|
|
68
75
|
"-u",
|
|
69
76
|
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
|
70
77
|
"--json-output",
|
|
@@ -74,7 +81,6 @@
|
|
|
74
81
|
],
|
|
75
82
|
"infra_step": true,
|
|
76
83
|
"name": "listdir fetch_configs",
|
|
77
|
-
"stdout": "/path/to/tmp/",
|
|
78
84
|
"~followup_annotations": [
|
|
79
85
|
"@@@STEP_LOG_LINE@listdir@[START_DIR]/depot_tools/fetch_configs/depot_tools.py@@@",
|
|
80
86
|
"@@@STEP_LOG_LINE@listdir@[START_DIR]/depot_tools/fetch_configs/infra.py@@@",
|
|
@@ -102,7 +108,7 @@
|
|
|
102
108
|
},
|
|
103
109
|
{
|
|
104
110
|
"cmd": [
|
|
105
|
-
"
|
|
111
|
+
"vpython",
|
|
106
112
|
"-u",
|
|
107
113
|
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
|
108
114
|
"--json-output",
|
|
@@ -143,7 +149,7 @@
|
|
|
143
149
|
},
|
|
144
150
|
{
|
|
145
151
|
"cmd": [
|
|
146
|
-
"
|
|
152
|
+
"vpython",
|
|
147
153
|
"-u",
|
|
148
154
|
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
|
149
155
|
"--json-output",
|
|
@@ -164,7 +170,6 @@
|
|
|
164
170
|
"name": "cleanup (2)"
|
|
165
171
|
},
|
|
166
172
|
{
|
|
167
|
-
"jsonResult": null,
|
|
168
173
|
"name": "$result"
|
|
169
174
|
}
|
|
170
175
|
]
|
data/vendor/depot_tools/repo
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
|
|
3
|
-
# repo default configuration
|
|
2
|
+
# -*- coding:utf-8 -*-
|
|
4
3
|
#
|
|
5
|
-
|
|
6
|
-
REPO_URL = os.environ.get('REPO_URL', None)
|
|
7
|
-
if not REPO_URL:
|
|
8
|
-
REPO_URL = 'https://chromium.googlesource.com/external/repo'
|
|
9
|
-
REPO_REV = 'stable'
|
|
10
|
-
|
|
11
|
-
# Copyright (C) 2008 Google Inc.
|
|
4
|
+
# Copyright (C) 2008 The Android Open Source Project
|
|
12
5
|
#
|
|
13
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
14
7
|
# you may not use this file except in compliance with the License.
|
|
@@ -22,11 +15,128 @@ REPO_REV = 'stable'
|
|
|
22
15
|
# See the License for the specific language governing permissions and
|
|
23
16
|
# limitations under the License.
|
|
24
17
|
|
|
18
|
+
"""Repo launcher.
|
|
19
|
+
|
|
20
|
+
This is a standalone tool that people may copy to anywhere in their system.
|
|
21
|
+
It is used to get an initial repo client checkout, and after that it runs the
|
|
22
|
+
copy of repo in the checkout.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from __future__ import print_function
|
|
26
|
+
|
|
27
|
+
import datetime
|
|
28
|
+
import os
|
|
29
|
+
import platform
|
|
30
|
+
import shlex
|
|
31
|
+
import subprocess
|
|
32
|
+
import sys
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# Keep basic logic in sync with repo_trace.py.
|
|
36
|
+
class Trace(object):
|
|
37
|
+
"""Trace helper logic."""
|
|
38
|
+
|
|
39
|
+
REPO_TRACE = 'REPO_TRACE'
|
|
40
|
+
|
|
41
|
+
def __init__(self):
|
|
42
|
+
self.set(os.environ.get(self.REPO_TRACE) == '1')
|
|
43
|
+
|
|
44
|
+
def set(self, value):
|
|
45
|
+
self.enabled = bool(value)
|
|
46
|
+
|
|
47
|
+
def print(self, *args, **kwargs):
|
|
48
|
+
if self.enabled:
|
|
49
|
+
print(*args, **kwargs)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
trace = Trace()
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def exec_command(cmd):
|
|
56
|
+
"""Execute |cmd| or return None on failure."""
|
|
57
|
+
trace.print(':', ' '.join(cmd))
|
|
58
|
+
try:
|
|
59
|
+
if platform.system() == 'Windows':
|
|
60
|
+
ret = subprocess.call(cmd)
|
|
61
|
+
sys.exit(ret)
|
|
62
|
+
else:
|
|
63
|
+
os.execvp(cmd[0], cmd)
|
|
64
|
+
except Exception:
|
|
65
|
+
pass
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def check_python_version():
|
|
69
|
+
"""Make sure the active Python version is recent enough."""
|
|
70
|
+
def reexec(prog):
|
|
71
|
+
exec_command([prog] + sys.argv)
|
|
72
|
+
|
|
73
|
+
MIN_PYTHON_VERSION = (3, 6)
|
|
74
|
+
|
|
75
|
+
ver = sys.version_info
|
|
76
|
+
major = ver.major
|
|
77
|
+
minor = ver.minor
|
|
78
|
+
|
|
79
|
+
# Abort on very old Python 2 versions.
|
|
80
|
+
if (major, minor) < (2, 7):
|
|
81
|
+
print('repo: error: Your Python version is too old. '
|
|
82
|
+
'Please use Python {}.{} or newer instead.'.format(
|
|
83
|
+
*MIN_PYTHON_VERSION), file=sys.stderr)
|
|
84
|
+
sys.exit(1)
|
|
85
|
+
|
|
86
|
+
# Try to re-exec the version specific Python 3 if needed.
|
|
87
|
+
if (major, minor) < MIN_PYTHON_VERSION:
|
|
88
|
+
# Python makes releases ~once a year, so try our min version +10 to help
|
|
89
|
+
# bridge the gap. This is the fallback anyways so perf isn't critical.
|
|
90
|
+
min_major, min_minor = MIN_PYTHON_VERSION
|
|
91
|
+
for inc in range(0, 10):
|
|
92
|
+
reexec('python{}.{}'.format(min_major, min_minor + inc))
|
|
93
|
+
|
|
94
|
+
# Try the generic Python 3 wrapper, but only if it's new enough. We don't
|
|
95
|
+
# want to go from (still supported) Python 2.7 to (unsupported) Python 3.5.
|
|
96
|
+
try:
|
|
97
|
+
proc = subprocess.Popen(
|
|
98
|
+
['python3', '-c', 'import sys; '
|
|
99
|
+
'print(sys.version_info.major, sys.version_info.minor)'],
|
|
100
|
+
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
101
|
+
(output, _) = proc.communicate()
|
|
102
|
+
python3_ver = tuple(int(x) for x in output.decode('utf-8').split())
|
|
103
|
+
except (OSError, subprocess.CalledProcessError):
|
|
104
|
+
python3_ver = None
|
|
105
|
+
|
|
106
|
+
# The python3 version looks like it's new enough, so give it a try.
|
|
107
|
+
if python3_ver and python3_ver >= MIN_PYTHON_VERSION:
|
|
108
|
+
reexec('python3')
|
|
109
|
+
|
|
110
|
+
# We're still here, so diagnose things for the user.
|
|
111
|
+
if major < 3:
|
|
112
|
+
print('repo: warning: Python 2 is no longer supported; '
|
|
113
|
+
'Please upgrade to Python {}.{}+.'.format(*MIN_PYTHON_VERSION),
|
|
114
|
+
file=sys.stderr)
|
|
115
|
+
else:
|
|
116
|
+
print('repo: error: Python 3 version is too old; '
|
|
117
|
+
'Please use Python {}.{} or newer.'.format(*MIN_PYTHON_VERSION),
|
|
118
|
+
file=sys.stderr)
|
|
119
|
+
sys.exit(1)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
if __name__ == '__main__':
|
|
123
|
+
check_python_version()
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
# repo default configuration
|
|
127
|
+
#
|
|
128
|
+
REPO_URL = os.environ.get('REPO_URL', None)
|
|
129
|
+
if not REPO_URL:
|
|
130
|
+
REPO_URL = 'https://chromium.googlesource.com/external/repo'
|
|
131
|
+
REPO_REV = os.environ.get('REPO_REV')
|
|
132
|
+
if not REPO_REV:
|
|
133
|
+
REPO_REV = 'stable'
|
|
134
|
+
|
|
25
135
|
# increment this whenever we make important changes to this script
|
|
26
|
-
VERSION = (
|
|
136
|
+
VERSION = (2, 8)
|
|
27
137
|
|
|
28
138
|
# increment this if the MAINTAINER_KEYS block is modified
|
|
29
|
-
KEYRING_VERSION = (
|
|
139
|
+
KEYRING_VERSION = (2, 3)
|
|
30
140
|
|
|
31
141
|
# Each individual key entry is created by using:
|
|
32
142
|
# gpg --armor --export keyid
|
|
@@ -34,7 +144,6 @@ MAINTAINER_KEYS = """
|
|
|
34
144
|
|
|
35
145
|
Repo Maintainer <repo@android.kernel.org>
|
|
36
146
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
37
|
-
Version: GnuPG v1.4.2.2 (GNU/Linux)
|
|
38
147
|
|
|
39
148
|
mQGiBEj3ugERBACrLJh/ZPyVSKeClMuznFIrsQ+hpNnmJGw1a9GXKYKk8qHPhAZf
|
|
40
149
|
WKtrBqAVMNRLhL85oSlekRz98u41H5si5zcuv+IXJDF5MJYcB8f22wAy15lUqPWi
|
|
@@ -70,189 +179,63 @@ p3v5ILwfC7hVx4jHSnOgZ65L9s8EQdVr1ckN9243yta7rNgwfcqb60ILMFF1BRk/
|
|
|
70
179
|
5xGrFy8tfAaeBMIQ17gvFSp/suc9DYO0ICK2BISzq+F+ZiAKsjMYOBNdH/h0zobQ
|
|
71
180
|
HTHs37+/QLMomGEGKZMWi0dShU2J5mNRQu3Hhxl3hHDVbt5CeJBb26aQcQrFz69W
|
|
72
181
|
zE3GNvmJosh6leayjtI9P2A6iEkEGBECAAkFAkj3uiACGwwACgkQFlMNXpIPXGWp
|
|
73
|
-
TACbBS+Up3RpfYVfd63c1cDdlru13pQAn3NQy/SN858MkxN+
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
=AUp4
|
|
107
|
-
-----END PGP PUBLIC KEY BLOCK-----
|
|
108
|
-
|
|
109
|
-
Stefan Zager <szager@chromium.org>
|
|
110
|
-
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
111
|
-
Version: GnuPG v1.4.11 (GNU/Linux)
|
|
112
|
-
|
|
113
|
-
mQINBFIJOcgBEADwZIq4GRGoO1RJFKlrtVK501cwT5H+Acbizc9N5RxTkFmqxDjb
|
|
114
|
-
9ApUaPW6S1b8+nrzE9P1Ri5erfzipuStfaZ/Wl3mP1JjKulibddmgnPOEbAJ673k
|
|
115
|
-
Vj85RUO4rt2oZAHnZN3D3gFJzVY8JVlZ47Enj9fTqzcW78FVsPCpIT9P2LpTLWeE
|
|
116
|
-
jX9Cjxeimy6VvyJstIcDLYhlpUN5UWen79L4LFAkHf3luLuU4W3p9NriqUsy5UG2
|
|
117
|
-
8vO6QdhKrCr5wsjDFFeVnpMtjlSeZJAWH+XhFFibMX1xP5R9BTuJfzw3kOVKvcE0
|
|
118
|
-
e9ClxgoulepXPv2xnDkqO3pG2gQVzl8LA+Aol8/IXfa7KP5FBkxK/g1cDuDtXRk4
|
|
119
|
-
YLpLaLYeeKEhhOHLpsKYkK2DXTIcN+56UnTLGolummpZnCM8UUSZxQgbkFgk4YJL
|
|
120
|
-
Elip0hgLZzqEl5h9vjmnQp89AZIHKcgNmzn+szLTOR9x24joaLyQ534x8OSC8lmu
|
|
121
|
-
tJv2tQjDOVGWVwvY4gOTpyxCWMwur6WOiMk/TPWdiVRFWAGrAHwf0/CTBEqNhosh
|
|
122
|
-
sVXfPeMADBA0PorDbJ6kwcOkLUTGf8CT7OG1R9TuKPEmSjK7BYu/pT4DXitaRCiv
|
|
123
|
-
uPVlwbVFpLFr0/jwaKJVMLUjL5MaYwzjJqI2c4RdROZhpMhkn4LvCMmFSQARAQAB
|
|
124
|
-
tCJTdGVmYW4gWmFnZXIgPHN6YWdlckBjaHJvbWl1bS5vcmc+iQI4BBMBAgAiBQJS
|
|
125
|
-
CTnIAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDcuoHPGCdZNU0UD/9y
|
|
126
|
-
0zwwOJH2UGPAzZ0YVzr7p0HtKedoxuFvPkdQxlBIaUOueMzFRmNQu3GI9irAu3MQ
|
|
127
|
-
Jkip8/gi7dnLVmJyS/zWARBaRGwSVd1++87XDjw8n7l181p7394X0Agq/heri599
|
|
128
|
-
YheHXkxXKVMPqByWNEPHu4eDbxeJTaDIjcKC2pzKQkm6HbWgW4wA9gCh1TRki8FP
|
|
129
|
-
LMv1Fu/dr13STCR9P2evsTRZ+ZSJhTSboHNHeEAJGiGZQAsN94oht7647lYj+AyR
|
|
130
|
-
ThzyHDMXXiDr8jPJIkyRilY+y82bCOatOfPoCkce3VI+LRUGJ19hJY01m4RRneIE
|
|
131
|
-
55l7fXR3zggcsONjV5b+oLcGQPGgX9w64BJ7khT7Wb9+kuyrdJBIBzJsaACFEbri
|
|
132
|
-
pPi02FS/HahYpLC3J66REAeNyofgVXau6WQsHrHMGsBTL9aAr0nrCrkF4Nyyc2Jd
|
|
133
|
-
do6nYuljuUhORqbEECmmBM2eBtkL6Ac92D6WMBIwBOC5tCNHO2YFIvi8Y8EuE8sc
|
|
134
|
-
1zB5U5Ai4SIu2icRAhzAhCRaUq02cMWuELKH6Vuh9nzgEefFWty6vPbKEyZLu19D
|
|
135
|
-
B80aqP1cTN88FjtKQ/eTF29TUB6AefUeBS17e2e3WUMy4nc8tduuOFYfiHP40ScP
|
|
136
|
-
wOoatwfzpiTIPGbocUEPL+pS0O/Xy8SINxFMCud3zA==
|
|
137
|
-
=Vd2S
|
|
138
|
-
-----END PGP PUBLIC KEY BLOCK-----
|
|
139
|
-
|
|
140
|
-
David James <davidjames@google.com>
|
|
141
|
-
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
142
|
-
Version: GnuPG v1
|
|
143
|
-
|
|
144
|
-
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
-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
-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
-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
-
SBOIczOscD9T/F3NbSlgFwWlQ7JeixdOsCMaYh7gYcXqdq2jluHuKQlTGmGlFwGm
|
|
149
|
-
5TOh6NwvVUV68JZfer2CGMQv4JImQfousy9V+KGddTBfjYkwtmG9oTkSWBLuO91/
|
|
150
|
-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
-
64md/auhee4ED3V0mtWSWYyjriAQUIE0LHVHP1zyEf5gVwDZyuE2HlFZr1eFJWiH
|
|
152
|
-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
-
Mw5pDm691L1Xn3v3yMRZZUCottUpUEnz5qAa0eQHWBU4PpXUCaWElwwuT+3Lcx1U
|
|
154
|
-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
-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
-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
-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
-
mwP6WDoX9SbkvxxQd+AxaRmDCQSf7h/fFMB+q9WycH5Mj+N4mc7iivsf1RdZzlmF
|
|
159
|
-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
-
Le4cZKBwSokPJEL1Ta4bNQPkzY251CSjH9feHCE1ac16/wh1qhkozl8/QbIVFVTA
|
|
161
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
03LsNBsfoEI81rRuAl5NeFNa+YXf3w7olF2qbwZXcGmRBteUBBvfonW64nk8w+Ui
|
|
175
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
u+r4LcB98D8jIUXz9PPbIHiDLJjMWOG8olZz1zcHpt86b+bf8c9TxFAE8p3G/jpQ
|
|
187
|
-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
-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
-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
|
|
190
|
-
IM4=
|
|
191
|
-
=6VNc
|
|
192
|
-
-----END PGP PUBLIC KEY BLOCK-----
|
|
193
|
-
|
|
194
|
-
Mike Frysinger <vapier@chromium.org>
|
|
195
|
-
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
196
|
-
Version: GnuPG v1
|
|
197
|
-
|
|
198
|
-
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
-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
-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
-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
-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
-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
-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
-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
-
gfohjqPnDGL15ztyedP3iGgb/7usPFI+k3cHgiMfvmqD2F+iJ7h69sSb2nn8dx8P
|
|
207
|
-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
-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
-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
-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
-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
-
tCfD1NqT7cgE685ru6x5Nh1xaeXGNFn339xh0CQ0xF7xQYi3uxlYaNMNhJC0LIfE
|
|
213
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
Dn+mK+tV0egPsus0tnfmps6ONhvxfZtkRWsJkQ0EDh8SbIEnBd8zolXXJnDSTpjL
|
|
229
|
-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
-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
-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
-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
|
|
233
|
-
=i88c
|
|
182
|
+
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
|
|
213
|
+
cZ7aFsJF4PtcDrfdejyAxbtsSHI=
|
|
214
|
+
=82Tj
|
|
234
215
|
-----END PGP PUBLIC KEY BLOCK-----
|
|
235
216
|
"""
|
|
236
217
|
|
|
237
218
|
GIT = 'git' # our git command
|
|
219
|
+
# NB: The version of git that the repo launcher requires may be much older than
|
|
220
|
+
# the version of git that the main repo source tree requires. Keeping this at
|
|
221
|
+
# an older version also makes it easier for users to upgrade/rollback as needed.
|
|
222
|
+
#
|
|
223
|
+
# git-1.7 is in (EOL) Ubuntu Precise.
|
|
238
224
|
MIN_GIT_VERSION = (1, 7, 2) # minimum supported git version
|
|
239
225
|
repodir = '.repo' # name of repo's private directory
|
|
240
226
|
S_repo = 'repo' # special repo repository
|
|
241
227
|
S_manifests = 'manifests' # special manifest repository
|
|
242
228
|
REPO_MAIN = S_repo + '/main.py' # main script
|
|
243
|
-
MIN_PYTHON_VERSION = (2, 7) # minimum supported python version
|
|
244
229
|
GITC_CONFIG_FILE = '/gitc/.config'
|
|
245
230
|
GITC_FS_ROOT_DIR = '/gitc/manifest-rw/'
|
|
246
231
|
|
|
247
232
|
|
|
233
|
+
import collections
|
|
248
234
|
import errno
|
|
249
235
|
import optparse
|
|
250
|
-
import platform
|
|
251
236
|
import re
|
|
252
237
|
import shutil
|
|
253
238
|
import stat
|
|
254
|
-
import subprocess
|
|
255
|
-
import sys
|
|
256
239
|
|
|
257
240
|
if sys.version_info[0] == 3:
|
|
258
241
|
import urllib.request
|
|
@@ -265,113 +248,175 @@ else:
|
|
|
265
248
|
urllib.error = urllib2
|
|
266
249
|
|
|
267
250
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
end = kwargs.get('end', '\n')
|
|
271
|
-
out = kwargs.get('file', sys.stdout)
|
|
272
|
-
out.write(sep.join(objects) + end)
|
|
251
|
+
home_dot_repo = os.path.expanduser('~/.repoconfig')
|
|
252
|
+
gpg_dir = os.path.join(home_dot_repo, 'gnupg')
|
|
273
253
|
|
|
274
254
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
if
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
255
|
+
def GetParser(gitc_init=False):
|
|
256
|
+
"""Setup the CLI parser."""
|
|
257
|
+
if gitc_init:
|
|
258
|
+
usage = 'repo gitc-init -u url -c client [options]'
|
|
259
|
+
else:
|
|
260
|
+
usage = 'repo init -u url [options]'
|
|
261
|
+
|
|
262
|
+
parser = optparse.OptionParser(usage=usage)
|
|
263
|
+
|
|
264
|
+
# Logging.
|
|
265
|
+
group = parser.add_option_group('Logging options')
|
|
266
|
+
group.add_option('-v', '--verbose',
|
|
267
|
+
dest='output_mode', action='store_true',
|
|
268
|
+
help='show all output')
|
|
269
|
+
group.add_option('-q', '--quiet',
|
|
270
|
+
dest='output_mode', action='store_false',
|
|
271
|
+
help='only show errors')
|
|
272
|
+
|
|
273
|
+
# Manifest.
|
|
274
|
+
group = parser.add_option_group('Manifest options')
|
|
275
|
+
group.add_option('-u', '--manifest-url',
|
|
276
|
+
help='manifest repository location', metavar='URL')
|
|
277
|
+
group.add_option('-b', '--manifest-branch',
|
|
278
|
+
help='manifest branch or revision', metavar='REVISION')
|
|
279
|
+
group.add_option('-m', '--manifest-name',
|
|
280
|
+
help='initial manifest file', metavar='NAME.xml')
|
|
281
|
+
cbr_opts = ['--current-branch']
|
|
282
|
+
# The gitc-init subcommand allocates -c itself, but a lot of init users
|
|
283
|
+
# want -c, so try to satisfy both as best we can.
|
|
284
|
+
if not gitc_init:
|
|
285
|
+
cbr_opts += ['-c']
|
|
286
|
+
group.add_option(*cbr_opts,
|
|
287
|
+
dest='current_branch_only', action='store_true',
|
|
288
|
+
help='fetch only current manifest branch from server')
|
|
289
|
+
group.add_option('--mirror', action='store_true',
|
|
290
|
+
help='create a replica of the remote repositories '
|
|
291
|
+
'rather than a client working directory')
|
|
292
|
+
group.add_option('--reference',
|
|
293
|
+
help='location of mirror directory', metavar='DIR')
|
|
294
|
+
group.add_option('--dissociate', action='store_true',
|
|
295
|
+
help='dissociate from reference mirrors after clone')
|
|
296
|
+
group.add_option('--depth', type='int', default=None,
|
|
297
|
+
help='create a shallow clone with given depth; '
|
|
298
|
+
'see git clone')
|
|
299
|
+
group.add_option('--partial-clone', action='store_true',
|
|
300
|
+
help='perform partial clone (https://git-scm.com/'
|
|
301
|
+
'docs/gitrepository-layout#_code_partialclone_code)')
|
|
302
|
+
group.add_option('--clone-filter', action='store', default='blob:none',
|
|
303
|
+
help='filter for use with --partial-clone '
|
|
304
|
+
'[default: %default]')
|
|
305
|
+
group.add_option('--worktree', action='store_true',
|
|
306
|
+
help=optparse.SUPPRESS_HELP)
|
|
307
|
+
group.add_option('--archive', action='store_true',
|
|
308
|
+
help='checkout an archive instead of a git repository for '
|
|
309
|
+
'each project. See git archive.')
|
|
310
|
+
group.add_option('--submodules', action='store_true',
|
|
311
|
+
help='sync any submodules associated with the manifest repo')
|
|
312
|
+
group.add_option('-g', '--groups', default='default',
|
|
313
|
+
help='restrict manifest projects to ones with specified '
|
|
314
|
+
'group(s) [default|all|G1,G2,G3|G4,-G5,-G6]',
|
|
315
|
+
metavar='GROUP')
|
|
316
|
+
group.add_option('-p', '--platform', default='auto',
|
|
317
|
+
help='restrict manifest projects to ones with a specified '
|
|
318
|
+
'platform group [auto|all|none|linux|darwin|...]',
|
|
319
|
+
metavar='PLATFORM')
|
|
320
|
+
group.add_option('--clone-bundle', action='store_true',
|
|
321
|
+
help='enable use of /clone.bundle on HTTP/HTTPS (default if not --partial-clone)')
|
|
322
|
+
group.add_option('--no-clone-bundle',
|
|
323
|
+
dest='clone_bundle', action='store_false',
|
|
324
|
+
help='disable use of /clone.bundle on HTTP/HTTPS (default if --partial-clone)')
|
|
325
|
+
group.add_option('--no-tags',
|
|
326
|
+
dest='tags', default=True, action='store_false',
|
|
327
|
+
help="don't fetch tags in the manifest")
|
|
328
|
+
|
|
329
|
+
# Tool.
|
|
330
|
+
group = parser.add_option_group('repo Version options')
|
|
331
|
+
group.add_option('--repo-url', metavar='URL',
|
|
332
|
+
help='repo repository location ($REPO_URL)')
|
|
333
|
+
group.add_option('--repo-rev', metavar='REV',
|
|
334
|
+
help='repo branch or revision ($REPO_REV)')
|
|
335
|
+
group.add_option('--repo-branch', dest='repo_rev',
|
|
336
|
+
help=optparse.SUPPRESS_HELP)
|
|
337
|
+
group.add_option('--no-repo-verify',
|
|
338
|
+
dest='repo_verify', default=True, action='store_false',
|
|
339
|
+
help='do not verify repo source code')
|
|
340
|
+
|
|
341
|
+
# Other.
|
|
342
|
+
group = parser.add_option_group('Other options')
|
|
343
|
+
group.add_option('--config-name',
|
|
344
|
+
action='store_true', default=False,
|
|
345
|
+
help='Always prompt for name/e-mail')
|
|
346
|
+
|
|
347
|
+
# gitc-init specific settings.
|
|
348
|
+
if gitc_init:
|
|
349
|
+
group = parser.add_option_group('GITC options')
|
|
350
|
+
group.add_option('-f', '--manifest-file',
|
|
351
|
+
help='Optional manifest file to use for this GITC client.')
|
|
352
|
+
group.add_option('-c', '--gitc-client',
|
|
353
|
+
help='Name of the gitc_client instance to create or modify.')
|
|
354
|
+
|
|
355
|
+
return parser
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
# This is a poor replacement for subprocess.run until we require Python 3.6+.
|
|
359
|
+
RunResult = collections.namedtuple(
|
|
360
|
+
'RunResult', ('returncode', 'stdout', 'stderr'))
|
|
285
361
|
|
|
286
|
-
home_dot_repo = os.path.expanduser('~/.repoconfig')
|
|
287
|
-
gpg_dir = os.path.join(home_dot_repo, 'gnupg')
|
|
288
362
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
# Tool
|
|
348
|
-
group = init_optparse.add_option_group('repo Version options')
|
|
349
|
-
group.add_option('--repo-url',
|
|
350
|
-
dest='repo_url',
|
|
351
|
-
help='repo repository location', metavar='URL')
|
|
352
|
-
group.add_option('--repo-branch',
|
|
353
|
-
dest='repo_branch',
|
|
354
|
-
help='repo branch or revision', metavar='REVISION')
|
|
355
|
-
group.add_option('--no-repo-verify',
|
|
356
|
-
dest='no_repo_verify', action='store_true',
|
|
357
|
-
help='do not verify repo source code')
|
|
358
|
-
|
|
359
|
-
# Other
|
|
360
|
-
group = init_optparse.add_option_group('Other options')
|
|
361
|
-
group.add_option('--config-name',
|
|
362
|
-
dest='config_name', action="store_true", default=False,
|
|
363
|
-
help='Always prompt for name/e-mail')
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
def _GitcInitOptions(init_optparse_arg):
|
|
367
|
-
init_optparse_arg.set_usage("repo gitc-init -u url -c client [options]")
|
|
368
|
-
g = init_optparse_arg.add_option_group('GITC options')
|
|
369
|
-
g.add_option('-f', '--manifest-file',
|
|
370
|
-
dest='manifest_file',
|
|
371
|
-
help='Optional manifest file to use for this GITC client.')
|
|
372
|
-
g.add_option('-c', '--gitc-client',
|
|
373
|
-
dest='gitc_client',
|
|
374
|
-
help='The name of the gitc_client instance to create or modify.')
|
|
363
|
+
class RunError(Exception):
|
|
364
|
+
"""Error when running a command failed."""
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
def run_command(cmd, **kwargs):
|
|
368
|
+
"""Run |cmd| and return its output."""
|
|
369
|
+
check = kwargs.pop('check', False)
|
|
370
|
+
if kwargs.pop('capture_output', False):
|
|
371
|
+
kwargs.setdefault('stdout', subprocess.PIPE)
|
|
372
|
+
kwargs.setdefault('stderr', subprocess.PIPE)
|
|
373
|
+
cmd_input = kwargs.pop('input', None)
|
|
374
|
+
|
|
375
|
+
def decode(output):
|
|
376
|
+
"""Decode |output| to text."""
|
|
377
|
+
if output is None:
|
|
378
|
+
return output
|
|
379
|
+
try:
|
|
380
|
+
return output.decode('utf-8')
|
|
381
|
+
except UnicodeError:
|
|
382
|
+
print('repo: warning: Invalid UTF-8 output:\ncmd: %r\n%r' % (cmd, output),
|
|
383
|
+
file=sys.stderr)
|
|
384
|
+
# TODO(vapier): Once we require Python 3, use 'backslashreplace'.
|
|
385
|
+
return output.decode('utf-8', 'replace')
|
|
386
|
+
|
|
387
|
+
# Run & package the results.
|
|
388
|
+
proc = subprocess.Popen(cmd, **kwargs)
|
|
389
|
+
(stdout, stderr) = proc.communicate(input=cmd_input)
|
|
390
|
+
dbg = ': ' + ' '.join(cmd)
|
|
391
|
+
if cmd_input is not None:
|
|
392
|
+
dbg += ' 0<|'
|
|
393
|
+
if stdout == subprocess.PIPE:
|
|
394
|
+
dbg += ' 1>|'
|
|
395
|
+
if stderr == subprocess.PIPE:
|
|
396
|
+
dbg += ' 2>|'
|
|
397
|
+
elif stderr == subprocess.STDOUT:
|
|
398
|
+
dbg += ' 2>&1'
|
|
399
|
+
trace.print(dbg)
|
|
400
|
+
ret = RunResult(proc.returncode, decode(stdout), decode(stderr))
|
|
401
|
+
|
|
402
|
+
# If things failed, print useful debugging output.
|
|
403
|
+
if check and ret.returncode:
|
|
404
|
+
print('repo: error: "%s" failed with exit status %s' %
|
|
405
|
+
(cmd[0], ret.returncode), file=sys.stderr)
|
|
406
|
+
print(' cwd: %s\n cmd: %r' %
|
|
407
|
+
(kwargs.get('cwd', os.getcwd()), cmd), file=sys.stderr)
|
|
408
|
+
|
|
409
|
+
def _print_output(name, output):
|
|
410
|
+
if output:
|
|
411
|
+
print(' %s:\n >> %s' % (name, '\n >> '.join(output.splitlines())),
|
|
412
|
+
file=sys.stderr)
|
|
413
|
+
|
|
414
|
+
_print_output('stdout', ret.stdout)
|
|
415
|
+
_print_output('stderr', ret.stderr)
|
|
416
|
+
raise RunError(ret)
|
|
417
|
+
|
|
418
|
+
return ret
|
|
419
|
+
|
|
375
420
|
|
|
376
421
|
_gitc_manifest_dir = None
|
|
377
422
|
|
|
@@ -420,44 +465,63 @@ class CloneFailure(Exception):
|
|
|
420
465
|
"""
|
|
421
466
|
|
|
422
467
|
|
|
468
|
+
def check_repo_verify(repo_verify, quiet=False):
|
|
469
|
+
"""Check the --repo-verify state."""
|
|
470
|
+
if not repo_verify:
|
|
471
|
+
print('repo: warning: verification of repo code has been disabled;\n'
|
|
472
|
+
'repo will not be able to verify the integrity of itself.\n',
|
|
473
|
+
file=sys.stderr)
|
|
474
|
+
return False
|
|
475
|
+
|
|
476
|
+
if NeedSetupGnuPG():
|
|
477
|
+
return SetupGnuPG(quiet)
|
|
478
|
+
|
|
479
|
+
return True
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
def check_repo_rev(dst, rev, repo_verify=True, quiet=False):
|
|
483
|
+
"""Check that |rev| is valid."""
|
|
484
|
+
do_verify = check_repo_verify(repo_verify, quiet=quiet)
|
|
485
|
+
remote_ref, local_rev = resolve_repo_rev(dst, rev)
|
|
486
|
+
if not quiet and not remote_ref.startswith('refs/heads/'):
|
|
487
|
+
print('warning: repo is not tracking a remote branch, so it will not '
|
|
488
|
+
'receive updates', file=sys.stderr)
|
|
489
|
+
if do_verify:
|
|
490
|
+
rev = verify_rev(dst, remote_ref, local_rev, quiet)
|
|
491
|
+
else:
|
|
492
|
+
rev = local_rev
|
|
493
|
+
return (remote_ref, rev)
|
|
494
|
+
|
|
495
|
+
|
|
423
496
|
def _Init(args, gitc_init=False):
|
|
424
497
|
"""Installs repo by cloning it over the network.
|
|
425
498
|
"""
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
opt, args = init_optparse.parse_args(args)
|
|
499
|
+
parser = GetParser(gitc_init=gitc_init)
|
|
500
|
+
opt, args = parser.parse_args(args)
|
|
429
501
|
if args:
|
|
430
|
-
|
|
502
|
+
parser.print_usage()
|
|
431
503
|
sys.exit(1)
|
|
504
|
+
opt.quiet = opt.output_mode is False
|
|
505
|
+
opt.verbose = opt.output_mode is True
|
|
432
506
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
url = REPO_URL
|
|
436
|
-
extra_args.append('--repo-url=%s' % url)
|
|
507
|
+
if opt.clone_bundle is None:
|
|
508
|
+
opt.clone_bundle = False if opt.partial_clone else True
|
|
437
509
|
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
branch = REPO_REV
|
|
441
|
-
extra_args.append('--repo-branch=%s' % branch)
|
|
442
|
-
|
|
443
|
-
if branch.startswith('refs/heads/'):
|
|
444
|
-
branch = branch[len('refs/heads/'):]
|
|
445
|
-
if branch.startswith('refs/'):
|
|
446
|
-
_print("fatal: invalid branch name '%s'" % branch, file=sys.stderr)
|
|
447
|
-
raise CloneFailure()
|
|
510
|
+
url = opt.repo_url or REPO_URL
|
|
511
|
+
rev = opt.repo_rev or REPO_REV
|
|
448
512
|
|
|
449
513
|
try:
|
|
450
514
|
if gitc_init:
|
|
451
515
|
gitc_manifest_dir = get_gitc_manifest_dir()
|
|
452
516
|
if not gitc_manifest_dir:
|
|
453
|
-
|
|
454
|
-
|
|
517
|
+
print('fatal: GITC filesystem is not available. Exiting...',
|
|
518
|
+
file=sys.stderr)
|
|
455
519
|
sys.exit(1)
|
|
456
520
|
gitc_client = opt.gitc_client
|
|
457
521
|
if not gitc_client:
|
|
458
522
|
gitc_client = gitc_parse_clientdir(os.getcwd())
|
|
459
523
|
if not gitc_client:
|
|
460
|
-
|
|
524
|
+
print('fatal: GITC client (-c) is required.', file=sys.stderr)
|
|
461
525
|
sys.exit(1)
|
|
462
526
|
client_dir = os.path.join(gitc_manifest_dir, gitc_client)
|
|
463
527
|
if not os.path.exists(client_dir):
|
|
@@ -470,8 +534,8 @@ def _Init(args, gitc_init=False):
|
|
|
470
534
|
os.mkdir(repodir)
|
|
471
535
|
except OSError as e:
|
|
472
536
|
if e.errno != errno.EEXIST:
|
|
473
|
-
|
|
474
|
-
|
|
537
|
+
print('fatal: cannot make %s directory: %s'
|
|
538
|
+
% (repodir, e.strerror), file=sys.stderr)
|
|
475
539
|
# Don't raise CloneFailure; that would delete the
|
|
476
540
|
# name. Instead exit immediately.
|
|
477
541
|
#
|
|
@@ -479,73 +543,115 @@ def _Init(args, gitc_init=False):
|
|
|
479
543
|
|
|
480
544
|
_CheckGitVersion()
|
|
481
545
|
try:
|
|
482
|
-
if
|
|
483
|
-
|
|
484
|
-
else:
|
|
485
|
-
can_verify = True
|
|
486
|
-
|
|
546
|
+
if not opt.quiet:
|
|
547
|
+
print('Downloading Repo source from', url)
|
|
487
548
|
dst = os.path.abspath(os.path.join(repodir, S_repo))
|
|
488
|
-
_Clone(url, dst, opt.quiet,
|
|
549
|
+
_Clone(url, dst, opt.clone_bundle, opt.quiet, opt.verbose)
|
|
489
550
|
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
"REPO_URL set correctly?" % url, file=sys.stderr)
|
|
551
|
+
remote_ref, rev = check_repo_rev(dst, rev, opt.repo_verify, quiet=opt.quiet)
|
|
552
|
+
_Checkout(dst, remote_ref, rev, opt.quiet)
|
|
493
553
|
|
|
494
|
-
if
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
rev = 'refs/remotes/origin/%s^0' % branch
|
|
554
|
+
if not os.path.isfile(os.path.join(dst, 'repo')):
|
|
555
|
+
print("warning: '%s' does not look like a git-repo repository, is "
|
|
556
|
+
"REPO_URL set correctly?" % url, file=sys.stderr)
|
|
498
557
|
|
|
499
|
-
_Checkout(dst, branch, rev, opt.quiet)
|
|
500
558
|
except CloneFailure:
|
|
501
559
|
if opt.quiet:
|
|
502
|
-
|
|
503
|
-
|
|
560
|
+
print('fatal: repo init failed; run without --quiet to see why',
|
|
561
|
+
file=sys.stderr)
|
|
504
562
|
raise
|
|
505
563
|
|
|
506
564
|
|
|
507
|
-
def
|
|
565
|
+
def run_git(*args, **kwargs):
|
|
566
|
+
"""Run git and return execution details."""
|
|
567
|
+
kwargs.setdefault('capture_output', True)
|
|
568
|
+
kwargs.setdefault('check', True)
|
|
569
|
+
try:
|
|
570
|
+
return run_command([GIT] + list(args), **kwargs)
|
|
571
|
+
except OSError as e:
|
|
572
|
+
print(file=sys.stderr)
|
|
573
|
+
print('repo: error: "%s" is not available' % GIT, file=sys.stderr)
|
|
574
|
+
print('repo: error: %s' % e, file=sys.stderr)
|
|
575
|
+
print(file=sys.stderr)
|
|
576
|
+
print('Please make sure %s is installed and in your path.' % GIT,
|
|
577
|
+
file=sys.stderr)
|
|
578
|
+
sys.exit(1)
|
|
579
|
+
except RunError:
|
|
580
|
+
raise CloneFailure()
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
# The git version info broken down into components for easy analysis.
|
|
584
|
+
# Similar to Python's sys.version_info.
|
|
585
|
+
GitVersion = collections.namedtuple(
|
|
586
|
+
'GitVersion', ('major', 'minor', 'micro', 'full'))
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
def ParseGitVersion(ver_str=None):
|
|
590
|
+
if ver_str is None:
|
|
591
|
+
# Load the version ourselves.
|
|
592
|
+
ver_str = run_git('--version').stdout
|
|
593
|
+
|
|
508
594
|
if not ver_str.startswith('git version '):
|
|
509
595
|
return None
|
|
510
596
|
|
|
511
|
-
|
|
597
|
+
full_version = ver_str[len('git version '):].strip()
|
|
598
|
+
num_ver_str = full_version.split('-')[0]
|
|
512
599
|
to_tuple = []
|
|
513
600
|
for num_str in num_ver_str.split('.')[:3]:
|
|
514
601
|
if num_str.isdigit():
|
|
515
602
|
to_tuple.append(int(num_str))
|
|
516
603
|
else:
|
|
517
604
|
to_tuple.append(0)
|
|
518
|
-
|
|
605
|
+
to_tuple.append(full_version)
|
|
606
|
+
return GitVersion(*to_tuple)
|
|
519
607
|
|
|
520
608
|
|
|
521
609
|
def _CheckGitVersion():
|
|
522
|
-
|
|
523
|
-
try:
|
|
524
|
-
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
|
525
|
-
except OSError as e:
|
|
526
|
-
_print(file=sys.stderr)
|
|
527
|
-
_print("fatal: '%s' is not available" % GIT, file=sys.stderr)
|
|
528
|
-
_print('fatal: %s' % e, file=sys.stderr)
|
|
529
|
-
_print(file=sys.stderr)
|
|
530
|
-
_print('Please make sure %s is installed and in your path.' % GIT,
|
|
531
|
-
file=sys.stderr)
|
|
532
|
-
raise CloneFailure()
|
|
533
|
-
|
|
534
|
-
ver_str = proc.stdout.read().strip()
|
|
535
|
-
proc.stdout.close()
|
|
536
|
-
proc.wait()
|
|
537
|
-
|
|
538
|
-
ver_act = ParseGitVersion(ver_str)
|
|
610
|
+
ver_act = ParseGitVersion()
|
|
539
611
|
if ver_act is None:
|
|
540
|
-
|
|
612
|
+
print('fatal: unable to detect git version', file=sys.stderr)
|
|
541
613
|
raise CloneFailure()
|
|
542
614
|
|
|
543
615
|
if ver_act < MIN_GIT_VERSION:
|
|
544
616
|
need = '.'.join(map(str, MIN_GIT_VERSION))
|
|
545
|
-
|
|
617
|
+
print('fatal: git %s or later required; found %s' % (need, ver_act.full),
|
|
618
|
+
file=sys.stderr)
|
|
546
619
|
raise CloneFailure()
|
|
547
620
|
|
|
548
621
|
|
|
622
|
+
def SetGitTrace2ParentSid(env=None):
|
|
623
|
+
"""Set up GIT_TRACE2_PARENT_SID for git tracing."""
|
|
624
|
+
# We roughly follow the format git itself uses in trace2/tr2_sid.c.
|
|
625
|
+
# (1) Be unique (2) be valid filename (3) be fixed length.
|
|
626
|
+
#
|
|
627
|
+
# Since we always export this variable, we try to avoid more expensive calls.
|
|
628
|
+
# e.g. We don't attempt hostname lookups or hashing the results.
|
|
629
|
+
if env is None:
|
|
630
|
+
env = os.environ
|
|
631
|
+
|
|
632
|
+
KEY = 'GIT_TRACE2_PARENT_SID'
|
|
633
|
+
|
|
634
|
+
now = datetime.datetime.utcnow()
|
|
635
|
+
value = 'repo-%s-P%08x' % (now.strftime('%Y%m%dT%H%M%SZ'), os.getpid())
|
|
636
|
+
|
|
637
|
+
# If it's already set, then append ourselves.
|
|
638
|
+
if KEY in env:
|
|
639
|
+
value = env[KEY] + '/' + value
|
|
640
|
+
|
|
641
|
+
_setenv(KEY, value, env=env)
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
def _setenv(key, value, env=None):
|
|
645
|
+
"""Set |key| in the OS environment |env| to |value|."""
|
|
646
|
+
if env is None:
|
|
647
|
+
env = os.environ
|
|
648
|
+
# Environment handling across systems is messy.
|
|
649
|
+
try:
|
|
650
|
+
env[key] = value
|
|
651
|
+
except UnicodeEncodeError:
|
|
652
|
+
env[key] = value.encode()
|
|
653
|
+
|
|
654
|
+
|
|
549
655
|
def NeedSetupGnuPG():
|
|
550
656
|
if not os.path.isdir(home_dot_repo):
|
|
551
657
|
return True
|
|
@@ -569,56 +675,66 @@ def SetupGnuPG(quiet):
|
|
|
569
675
|
os.mkdir(home_dot_repo)
|
|
570
676
|
except OSError as e:
|
|
571
677
|
if e.errno != errno.EEXIST:
|
|
572
|
-
|
|
573
|
-
|
|
678
|
+
print('fatal: cannot make %s directory: %s'
|
|
679
|
+
% (home_dot_repo, e.strerror), file=sys.stderr)
|
|
574
680
|
sys.exit(1)
|
|
575
681
|
|
|
576
682
|
try:
|
|
577
683
|
os.mkdir(gpg_dir, stat.S_IRWXU)
|
|
578
684
|
except OSError as e:
|
|
579
685
|
if e.errno != errno.EEXIST:
|
|
580
|
-
|
|
581
|
-
|
|
686
|
+
print('fatal: cannot make %s directory: %s' % (gpg_dir, e.strerror),
|
|
687
|
+
file=sys.stderr)
|
|
582
688
|
sys.exit(1)
|
|
583
689
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
690
|
+
if not quiet:
|
|
691
|
+
print('repo: Updating release signing keys to keyset ver %s' %
|
|
692
|
+
('.'.join(str(x) for x in KEYRING_VERSION),))
|
|
693
|
+
# NB: We use --homedir (and cwd below) because some environments (Windows) do
|
|
694
|
+
# not correctly handle full native paths. We avoid the issue by changing to
|
|
695
|
+
# the right dir with cwd=gpg_dir before executing gpg, and then telling gpg to
|
|
696
|
+
# use the cwd (.) as its homedir which leaves the path resolution logic to it.
|
|
697
|
+
cmd = ['gpg', '--homedir', '.', '--import']
|
|
591
698
|
try:
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
699
|
+
# gpg can be pretty chatty. Always capture the output and if something goes
|
|
700
|
+
# wrong, the builtin check failure will dump stdout & stderr for debugging.
|
|
701
|
+
run_command(cmd, stdin=subprocess.PIPE, capture_output=True,
|
|
702
|
+
cwd=gpg_dir, check=True,
|
|
703
|
+
input=MAINTAINER_KEYS.encode('utf-8'))
|
|
704
|
+
except OSError:
|
|
596
705
|
if not quiet:
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
706
|
+
print('warning: gpg (GnuPG) is not available.', file=sys.stderr)
|
|
707
|
+
print('warning: Installing it is strongly encouraged.', file=sys.stderr)
|
|
708
|
+
print(file=sys.stderr)
|
|
600
709
|
return False
|
|
601
710
|
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
if proc.wait() != 0:
|
|
606
|
-
_print('fatal: registering repo maintainer keys failed', file=sys.stderr)
|
|
607
|
-
sys.exit(1)
|
|
608
|
-
_print()
|
|
609
|
-
|
|
610
|
-
fd = open(os.path.join(home_dot_repo, 'keyring-version'), 'w')
|
|
611
|
-
fd.write('.'.join(map(str, KEYRING_VERSION)) + '\n')
|
|
612
|
-
fd.close()
|
|
711
|
+
with open(os.path.join(home_dot_repo, 'keyring-version'), 'w') as fd:
|
|
712
|
+
fd.write('.'.join(map(str, KEYRING_VERSION)) + '\n')
|
|
613
713
|
return True
|
|
614
714
|
|
|
615
715
|
|
|
616
|
-
def _SetConfig(
|
|
716
|
+
def _SetConfig(cwd, name, value):
|
|
617
717
|
"""Set a git configuration option to the specified value.
|
|
618
718
|
"""
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
719
|
+
run_git('config', name, value, cwd=cwd)
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
def _GetRepoConfig(name):
|
|
723
|
+
"""Read a repo configuration option."""
|
|
724
|
+
config = os.path.join(home_dot_repo, 'config')
|
|
725
|
+
if not os.path.exists(config):
|
|
726
|
+
return None
|
|
727
|
+
|
|
728
|
+
cmd = ['config', '--file', config, '--get', name]
|
|
729
|
+
ret = run_git(*cmd, check=False)
|
|
730
|
+
if ret.returncode == 0:
|
|
731
|
+
return ret.stdout
|
|
732
|
+
elif ret.returncode == 1:
|
|
733
|
+
return None
|
|
734
|
+
else:
|
|
735
|
+
print('repo: error: git %s failed:\n%s' % (' '.join(cmd), ret.stderr),
|
|
736
|
+
file=sys.stderr)
|
|
737
|
+
raise RunError()
|
|
622
738
|
|
|
623
739
|
|
|
624
740
|
def _InitHttp():
|
|
@@ -632,7 +748,7 @@ def _InitHttp():
|
|
|
632
748
|
p = n.hosts[host]
|
|
633
749
|
mgr.add_password(p[1], 'http://%s/' % host, p[0], p[2])
|
|
634
750
|
mgr.add_password(p[1], 'https://%s/' % host, p[0], p[2])
|
|
635
|
-
except
|
|
751
|
+
except Exception:
|
|
636
752
|
pass
|
|
637
753
|
handlers.append(urllib.request.HTTPBasicAuthHandler(mgr))
|
|
638
754
|
handlers.append(urllib.request.HTTPDigestAuthHandler(mgr))
|
|
@@ -646,38 +762,29 @@ def _InitHttp():
|
|
|
646
762
|
urllib.request.install_opener(urllib.request.build_opener(*handlers))
|
|
647
763
|
|
|
648
764
|
|
|
649
|
-
def _Fetch(url,
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
cmd = [GIT, 'fetch']
|
|
654
|
-
if quiet:
|
|
765
|
+
def _Fetch(url, cwd, src, quiet, verbose):
|
|
766
|
+
cmd = ['fetch']
|
|
767
|
+
if not verbose:
|
|
655
768
|
cmd.append('--quiet')
|
|
769
|
+
err = None
|
|
770
|
+
if not quiet and sys.stdout.isatty():
|
|
771
|
+
cmd.append('--progress')
|
|
772
|
+
elif not verbose:
|
|
656
773
|
err = subprocess.PIPE
|
|
657
|
-
else:
|
|
658
|
-
err = None
|
|
659
774
|
cmd.append(src)
|
|
660
775
|
cmd.append('+refs/heads/*:refs/remotes/origin/*')
|
|
661
|
-
cmd.append('refs/tags/*:refs/tags/*')
|
|
662
|
-
|
|
663
|
-
proc = subprocess.Popen(cmd, cwd=local, stderr=err)
|
|
664
|
-
if err:
|
|
665
|
-
proc.stderr.read()
|
|
666
|
-
proc.stderr.close()
|
|
667
|
-
if proc.wait() != 0:
|
|
668
|
-
raise CloneFailure()
|
|
776
|
+
cmd.append('+refs/tags/*:refs/tags/*')
|
|
777
|
+
run_git(*cmd, stderr=err, capture_output=False, cwd=cwd)
|
|
669
778
|
|
|
670
779
|
|
|
671
|
-
def _DownloadBundle(url,
|
|
780
|
+
def _DownloadBundle(url, cwd, quiet, verbose):
|
|
672
781
|
if not url.endswith('/'):
|
|
673
782
|
url += '/'
|
|
674
783
|
url += 'clone.bundle'
|
|
675
784
|
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
stdout=subprocess.PIPE)
|
|
680
|
-
for line in proc.stdout:
|
|
785
|
+
ret = run_git('config', '--get-regexp', 'url.*.insteadof', cwd=cwd,
|
|
786
|
+
check=False)
|
|
787
|
+
for line in ret.stdout.splitlines():
|
|
681
788
|
m = re.compile(r'^url\.(.*)\.insteadof (.*)$').match(line)
|
|
682
789
|
if m:
|
|
683
790
|
new_url = m.group(1)
|
|
@@ -685,32 +792,30 @@ def _DownloadBundle(url, local, quiet):
|
|
|
685
792
|
if url.startswith(old_url):
|
|
686
793
|
url = new_url + url[len(old_url):]
|
|
687
794
|
break
|
|
688
|
-
proc.stdout.close()
|
|
689
|
-
proc.wait()
|
|
690
795
|
|
|
691
796
|
if not url.startswith('http:') and not url.startswith('https:'):
|
|
692
797
|
return False
|
|
693
798
|
|
|
694
|
-
dest = open(os.path.join(
|
|
799
|
+
dest = open(os.path.join(cwd, '.git', 'clone.bundle'), 'w+b')
|
|
695
800
|
try:
|
|
696
801
|
try:
|
|
697
802
|
r = urllib.request.urlopen(url)
|
|
698
803
|
except urllib.error.HTTPError as e:
|
|
699
804
|
if e.code in [401, 403, 404, 501]:
|
|
700
805
|
return False
|
|
701
|
-
|
|
702
|
-
|
|
806
|
+
print('fatal: Cannot get %s' % url, file=sys.stderr)
|
|
807
|
+
print('fatal: HTTP error %s' % e.code, file=sys.stderr)
|
|
703
808
|
raise CloneFailure()
|
|
704
809
|
except urllib.error.URLError as e:
|
|
705
|
-
|
|
706
|
-
|
|
810
|
+
print('fatal: Cannot get %s' % url, file=sys.stderr)
|
|
811
|
+
print('fatal: error %s' % e.reason, file=sys.stderr)
|
|
707
812
|
raise CloneFailure()
|
|
708
813
|
try:
|
|
709
|
-
if
|
|
710
|
-
|
|
814
|
+
if verbose:
|
|
815
|
+
print('Downloading clone bundle %s' % url, file=sys.stderr)
|
|
711
816
|
while True:
|
|
712
817
|
buf = r.read(8192)
|
|
713
|
-
if buf
|
|
818
|
+
if not buf:
|
|
714
819
|
return True
|
|
715
820
|
dest.write(buf)
|
|
716
821
|
finally:
|
|
@@ -719,124 +824,139 @@ def _DownloadBundle(url, local, quiet):
|
|
|
719
824
|
dest.close()
|
|
720
825
|
|
|
721
826
|
|
|
722
|
-
def _ImportBundle(
|
|
723
|
-
path = os.path.join(
|
|
827
|
+
def _ImportBundle(cwd):
|
|
828
|
+
path = os.path.join(cwd, '.git', 'clone.bundle')
|
|
724
829
|
try:
|
|
725
|
-
_Fetch(
|
|
830
|
+
_Fetch(cwd, cwd, path, True, False)
|
|
726
831
|
finally:
|
|
727
832
|
os.remove(path)
|
|
728
833
|
|
|
729
834
|
|
|
730
|
-
def _Clone(url,
|
|
835
|
+
def _Clone(url, cwd, clone_bundle, quiet, verbose):
|
|
731
836
|
"""Clones a git repository to a new subdirectory of repodir
|
|
732
837
|
"""
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
except OSError as e:
|
|
736
|
-
_print('fatal: cannot make %s directory: %s' % (local, e.strerror),
|
|
737
|
-
file=sys.stderr)
|
|
738
|
-
raise CloneFailure()
|
|
838
|
+
if verbose:
|
|
839
|
+
print('Cloning git repository', url)
|
|
739
840
|
|
|
740
|
-
cmd = [GIT, 'init', '--quiet']
|
|
741
841
|
try:
|
|
742
|
-
|
|
842
|
+
os.mkdir(cwd)
|
|
743
843
|
except OSError as e:
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
_print('fatal: %s' % e, file=sys.stderr)
|
|
747
|
-
_print(file=sys.stderr)
|
|
748
|
-
_print('Please make sure %s is installed and in your path.' % GIT,
|
|
749
|
-
file=sys.stderr)
|
|
750
|
-
raise CloneFailure()
|
|
751
|
-
if proc.wait() != 0:
|
|
752
|
-
_print('fatal: could not create %s' % local, file=sys.stderr)
|
|
844
|
+
print('fatal: cannot make %s directory: %s' % (cwd, e.strerror),
|
|
845
|
+
file=sys.stderr)
|
|
753
846
|
raise CloneFailure()
|
|
754
847
|
|
|
848
|
+
run_git('init', '--quiet', cwd=cwd)
|
|
849
|
+
|
|
755
850
|
_InitHttp()
|
|
756
|
-
_SetConfig(
|
|
757
|
-
_SetConfig(
|
|
851
|
+
_SetConfig(cwd, 'remote.origin.url', url)
|
|
852
|
+
_SetConfig(cwd,
|
|
758
853
|
'remote.origin.fetch',
|
|
759
854
|
'+refs/heads/*:refs/remotes/origin/*')
|
|
760
|
-
if clone_bundle and _DownloadBundle(url,
|
|
761
|
-
_ImportBundle(
|
|
762
|
-
_Fetch(url,
|
|
855
|
+
if clone_bundle and _DownloadBundle(url, cwd, quiet, verbose):
|
|
856
|
+
_ImportBundle(cwd)
|
|
857
|
+
_Fetch(url, cwd, 'origin', quiet, verbose)
|
|
763
858
|
|
|
764
859
|
|
|
765
|
-
def
|
|
766
|
-
"""
|
|
860
|
+
def resolve_repo_rev(cwd, committish):
|
|
861
|
+
"""Figure out what REPO_REV represents.
|
|
862
|
+
|
|
863
|
+
We support:
|
|
864
|
+
* refs/heads/xxx: Branch.
|
|
865
|
+
* refs/tags/xxx: Tag.
|
|
866
|
+
* xxx: Branch or tag or commit.
|
|
867
|
+
|
|
868
|
+
Args:
|
|
869
|
+
cwd: The git checkout to run in.
|
|
870
|
+
committish: The REPO_REV argument to resolve.
|
|
871
|
+
|
|
872
|
+
Returns:
|
|
873
|
+
A tuple of (remote ref, commit) as makes sense for the committish.
|
|
874
|
+
For branches, this will look like ('refs/heads/stable', <revision>).
|
|
875
|
+
For tags, this will look like ('refs/tags/v1.0', <revision>).
|
|
876
|
+
For commits, this will be (<revision>, <revision>).
|
|
767
877
|
"""
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
878
|
+
def resolve(committish):
|
|
879
|
+
ret = run_git('rev-parse', '--verify', '%s^{commit}' % (committish,),
|
|
880
|
+
cwd=cwd, check=False)
|
|
881
|
+
return None if ret.returncode else ret.stdout.strip()
|
|
882
|
+
|
|
883
|
+
# An explicit branch.
|
|
884
|
+
if committish.startswith('refs/heads/'):
|
|
885
|
+
remote_ref = committish
|
|
886
|
+
committish = committish[len('refs/heads/'):]
|
|
887
|
+
rev = resolve('refs/remotes/origin/%s' % committish)
|
|
888
|
+
if rev is None:
|
|
889
|
+
print('repo: error: unknown branch "%s"' % (committish,),
|
|
890
|
+
file=sys.stderr)
|
|
891
|
+
raise CloneFailure()
|
|
892
|
+
return (remote_ref, rev)
|
|
893
|
+
|
|
894
|
+
# An explicit tag.
|
|
895
|
+
if committish.startswith('refs/tags/'):
|
|
896
|
+
remote_ref = committish
|
|
897
|
+
committish = committish[len('refs/tags/'):]
|
|
898
|
+
rev = resolve(remote_ref)
|
|
899
|
+
if rev is None:
|
|
900
|
+
print('repo: error: unknown tag "%s"' % (committish,),
|
|
901
|
+
file=sys.stderr)
|
|
902
|
+
raise CloneFailure()
|
|
903
|
+
return (remote_ref, rev)
|
|
904
|
+
|
|
905
|
+
# See if it's a short branch name.
|
|
906
|
+
rev = resolve('refs/remotes/origin/%s' % committish)
|
|
907
|
+
if rev:
|
|
908
|
+
return ('refs/heads/%s' % (committish,), rev)
|
|
909
|
+
|
|
910
|
+
# See if it's a tag.
|
|
911
|
+
rev = resolve('refs/tags/%s' % committish)
|
|
912
|
+
if rev:
|
|
913
|
+
return ('refs/tags/%s' % (committish,), rev)
|
|
914
|
+
|
|
915
|
+
# See if it's a commit.
|
|
916
|
+
rev = resolve(committish)
|
|
917
|
+
if rev and rev.lower().startswith(committish.lower()):
|
|
918
|
+
return (rev, rev)
|
|
919
|
+
|
|
920
|
+
# Give up!
|
|
921
|
+
print('repo: error: unable to resolve "%s"' % (committish,), file=sys.stderr)
|
|
922
|
+
raise CloneFailure()
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
def verify_rev(cwd, remote_ref, rev, quiet):
|
|
926
|
+
"""Verify the commit has been signed by a tag."""
|
|
927
|
+
ret = run_git('describe', rev, cwd=cwd)
|
|
928
|
+
cur = ret.stdout.strip()
|
|
783
929
|
|
|
784
930
|
m = re.compile(r'^(.*)-[0-9]{1,}-g[0-9a-f]{1,}$').match(cur)
|
|
785
931
|
if m:
|
|
786
932
|
cur = m.group(1)
|
|
787
933
|
if not quiet:
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
934
|
+
print(file=sys.stderr)
|
|
935
|
+
print("warning: '%s' is not signed; falling back to signed release '%s'"
|
|
936
|
+
% (remote_ref, cur), file=sys.stderr)
|
|
937
|
+
print(file=sys.stderr)
|
|
792
938
|
|
|
793
939
|
env = os.environ.copy()
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
except UnicodeEncodeError:
|
|
797
|
-
env['GNUPGHOME'] = gpg_dir.encode()
|
|
798
|
-
|
|
799
|
-
cmd = [GIT, 'tag', '-v', cur]
|
|
800
|
-
proc = subprocess.Popen(cmd,
|
|
801
|
-
stdout=subprocess.PIPE,
|
|
802
|
-
stderr=subprocess.PIPE,
|
|
803
|
-
cwd=cwd,
|
|
804
|
-
env=env)
|
|
805
|
-
out = proc.stdout.read()
|
|
806
|
-
proc.stdout.close()
|
|
807
|
-
|
|
808
|
-
err = proc.stderr.read()
|
|
809
|
-
proc.stderr.close()
|
|
810
|
-
|
|
811
|
-
if proc.wait() != 0:
|
|
812
|
-
_print(file=sys.stderr)
|
|
813
|
-
_print(out, file=sys.stderr)
|
|
814
|
-
_print(err, file=sys.stderr)
|
|
815
|
-
_print(file=sys.stderr)
|
|
816
|
-
raise CloneFailure()
|
|
940
|
+
_setenv('GNUPGHOME', gpg_dir, env)
|
|
941
|
+
run_git('tag', '-v', cur, cwd=cwd, env=env)
|
|
817
942
|
return '%s^0' % cur
|
|
818
943
|
|
|
819
944
|
|
|
820
|
-
def _Checkout(cwd,
|
|
945
|
+
def _Checkout(cwd, remote_ref, rev, quiet):
|
|
821
946
|
"""Checkout an upstream branch into the repository and track it.
|
|
822
947
|
"""
|
|
823
|
-
|
|
824
|
-
if subprocess.Popen(cmd, cwd=cwd).wait() != 0:
|
|
825
|
-
raise CloneFailure()
|
|
948
|
+
run_git('update-ref', 'refs/heads/default', rev, cwd=cwd)
|
|
826
949
|
|
|
827
950
|
_SetConfig(cwd, 'branch.default.remote', 'origin')
|
|
828
|
-
_SetConfig(cwd, 'branch.default.merge',
|
|
951
|
+
_SetConfig(cwd, 'branch.default.merge', remote_ref)
|
|
829
952
|
|
|
830
|
-
|
|
831
|
-
if subprocess.Popen(cmd, cwd=cwd).wait() != 0:
|
|
832
|
-
raise CloneFailure()
|
|
953
|
+
run_git('symbolic-ref', 'HEAD', 'refs/heads/default', cwd=cwd)
|
|
833
954
|
|
|
834
|
-
cmd = [
|
|
955
|
+
cmd = ['read-tree', '--reset', '-u']
|
|
835
956
|
if not quiet:
|
|
836
957
|
cmd.append('-v')
|
|
837
958
|
cmd.append('HEAD')
|
|
838
|
-
|
|
839
|
-
raise CloneFailure()
|
|
959
|
+
run_git(*cmd, cwd=cwd)
|
|
840
960
|
|
|
841
961
|
|
|
842
962
|
def _FindRepo():
|
|
@@ -859,6 +979,26 @@ def _FindRepo():
|
|
|
859
979
|
|
|
860
980
|
class _Options(object):
|
|
861
981
|
help = False
|
|
982
|
+
version = False
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
def _ExpandAlias(name):
|
|
986
|
+
"""Look up user registered aliases."""
|
|
987
|
+
# We don't resolve aliases for existing subcommands. This matches git.
|
|
988
|
+
if name in {'gitc-init', 'help', 'init'}:
|
|
989
|
+
return name, []
|
|
990
|
+
|
|
991
|
+
alias = _GetRepoConfig('alias.%s' % (name,))
|
|
992
|
+
if alias is None:
|
|
993
|
+
return name, []
|
|
994
|
+
|
|
995
|
+
args = alias.strip().split(' ', 1)
|
|
996
|
+
name = args[0]
|
|
997
|
+
if len(args) == 2:
|
|
998
|
+
args = shlex.split(args[1])
|
|
999
|
+
else:
|
|
1000
|
+
args = []
|
|
1001
|
+
return name, args
|
|
862
1002
|
|
|
863
1003
|
|
|
864
1004
|
def _ParseArguments(args):
|
|
@@ -870,7 +1010,10 @@ def _ParseArguments(args):
|
|
|
870
1010
|
a = args[i]
|
|
871
1011
|
if a == '-h' or a == '--help':
|
|
872
1012
|
opt.help = True
|
|
873
|
-
|
|
1013
|
+
elif a == '--version':
|
|
1014
|
+
opt.version = True
|
|
1015
|
+
elif a == '--trace':
|
|
1016
|
+
trace.set(True)
|
|
874
1017
|
elif not a.startswith('-'):
|
|
875
1018
|
cmd = a
|
|
876
1019
|
arg = args[i + 1:]
|
|
@@ -883,7 +1026,7 @@ def _Usage():
|
|
|
883
1026
|
if get_gitc_manifest_dir():
|
|
884
1027
|
gitc_usage = " gitc-init Initialize a GITC Client.\n"
|
|
885
1028
|
|
|
886
|
-
|
|
1029
|
+
print(
|
|
887
1030
|
"""usage: repo COMMAND [ARGS]
|
|
888
1031
|
|
|
889
1032
|
repo is not yet installed. Use "repo init" to install it here.
|
|
@@ -895,37 +1038,52 @@ The most commonly used repo commands are:
|
|
|
895
1038
|
""" help Display detailed help on a command
|
|
896
1039
|
|
|
897
1040
|
For access to the full online help, install repo ("repo init").
|
|
898
|
-
"""
|
|
899
|
-
sys.exit(
|
|
1041
|
+
""")
|
|
1042
|
+
sys.exit(0)
|
|
900
1043
|
|
|
901
1044
|
|
|
902
1045
|
def _Help(args):
|
|
903
1046
|
if args:
|
|
904
|
-
if args[0]
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
elif args[0] == 'gitc-init':
|
|
908
|
-
_GitcInitOptions(init_optparse)
|
|
909
|
-
init_optparse.print_help()
|
|
1047
|
+
if args[0] in {'init', 'gitc-init'}:
|
|
1048
|
+
parser = GetParser(gitc_init=args[0] == 'gitc-init')
|
|
1049
|
+
parser.print_help()
|
|
910
1050
|
sys.exit(0)
|
|
911
1051
|
else:
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
1052
|
+
print("error: '%s' is not a bootstrap command.\n"
|
|
1053
|
+
' For access to online help, install repo ("repo init").'
|
|
1054
|
+
% args[0], file=sys.stderr)
|
|
915
1055
|
else:
|
|
916
1056
|
_Usage()
|
|
917
1057
|
sys.exit(1)
|
|
918
1058
|
|
|
919
1059
|
|
|
1060
|
+
def _Version():
|
|
1061
|
+
"""Show version information."""
|
|
1062
|
+
print('<repo not installed>')
|
|
1063
|
+
print('repo launcher version %s' % ('.'.join(str(x) for x in VERSION),))
|
|
1064
|
+
print(' (from %s)' % (__file__,))
|
|
1065
|
+
print('git %s' % (ParseGitVersion().full,))
|
|
1066
|
+
print('Python %s' % sys.version)
|
|
1067
|
+
uname = platform.uname()
|
|
1068
|
+
if sys.version_info.major < 3:
|
|
1069
|
+
# Python 3 returns a named tuple, but Python 2 is simpler.
|
|
1070
|
+
print(uname)
|
|
1071
|
+
else:
|
|
1072
|
+
print('OS %s %s (%s)' % (uname.system, uname.release, uname.version))
|
|
1073
|
+
print('CPU %s (%s)' %
|
|
1074
|
+
(uname.machine, uname.processor if uname.processor else 'unknown'))
|
|
1075
|
+
sys.exit(0)
|
|
1076
|
+
|
|
1077
|
+
|
|
920
1078
|
def _NotInstalled():
|
|
921
|
-
|
|
922
|
-
|
|
1079
|
+
print('error: repo is not installed. Use "repo init" to install it here.',
|
|
1080
|
+
file=sys.stderr)
|
|
923
1081
|
sys.exit(1)
|
|
924
1082
|
|
|
925
1083
|
|
|
926
1084
|
def _NoCommands(cmd):
|
|
927
|
-
|
|
928
|
-
|
|
1085
|
+
print("""error: command '%s' requires repo to be installed first.
|
|
1086
|
+
Use "repo init" to install it here.""" % cmd, file=sys.stderr)
|
|
929
1087
|
sys.exit(1)
|
|
930
1088
|
|
|
931
1089
|
|
|
@@ -949,26 +1107,26 @@ def _SetDefaultsTo(gitdir):
|
|
|
949
1107
|
global REPO_REV
|
|
950
1108
|
|
|
951
1109
|
REPO_URL = gitdir
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
if proc.wait() != 0:
|
|
965
|
-
_print('fatal: %s has no current branch' % gitdir, file=sys.stderr)
|
|
966
|
-
sys.exit(1)
|
|
1110
|
+
ret = run_git('--git-dir=%s' % gitdir, 'symbolic-ref', 'HEAD', check=False)
|
|
1111
|
+
if ret.returncode:
|
|
1112
|
+
# If we're not tracking a branch (bisect/etc...), then fall back to commit.
|
|
1113
|
+
print('repo: warning: %s has no current branch; using HEAD' % gitdir,
|
|
1114
|
+
file=sys.stderr)
|
|
1115
|
+
try:
|
|
1116
|
+
ret = run_git('rev-parse', 'HEAD', cwd=gitdir)
|
|
1117
|
+
except CloneFailure:
|
|
1118
|
+
print('fatal: %s has invalid HEAD' % gitdir, file=sys.stderr)
|
|
1119
|
+
sys.exit(1)
|
|
1120
|
+
|
|
1121
|
+
REPO_REV = ret.stdout.strip()
|
|
967
1122
|
|
|
968
1123
|
|
|
969
1124
|
def main(orig_args):
|
|
970
1125
|
cmd, opt, args = _ParseArguments(orig_args)
|
|
971
1126
|
|
|
1127
|
+
# We run this early as we run some git commands ourselves.
|
|
1128
|
+
SetGitTrace2ParentSid()
|
|
1129
|
+
|
|
972
1130
|
repo_main, rel_repo_dir = None, None
|
|
973
1131
|
# Don't use the local repo copy, make sure to switch to the gitc client first.
|
|
974
1132
|
if cmd != 'gitc-init':
|
|
@@ -979,16 +1137,23 @@ def main(orig_args):
|
|
|
979
1137
|
|
|
980
1138
|
cwd = os.getcwd()
|
|
981
1139
|
if get_gitc_manifest_dir() and cwd.startswith(get_gitc_manifest_dir()):
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
1140
|
+
print('error: repo cannot be used in the GITC local manifest directory.'
|
|
1141
|
+
'\nIf you want to work on this GITC client please rerun this '
|
|
1142
|
+
'command from the corresponding client under /gitc/',
|
|
1143
|
+
file=sys.stderr)
|
|
986
1144
|
sys.exit(1)
|
|
987
1145
|
if not repo_main:
|
|
1146
|
+
# Only expand aliases here since we'll be parsing the CLI ourselves.
|
|
1147
|
+
# If we had repo_main, alias expansion would happen in main.py.
|
|
1148
|
+
cmd, alias_args = _ExpandAlias(cmd)
|
|
1149
|
+
args = alias_args + args
|
|
1150
|
+
|
|
988
1151
|
if opt.help:
|
|
989
1152
|
_Usage()
|
|
990
1153
|
if cmd == 'help':
|
|
991
1154
|
_Help(args)
|
|
1155
|
+
if opt.version or cmd == 'version':
|
|
1156
|
+
_Version()
|
|
992
1157
|
if not cmd:
|
|
993
1158
|
_NotInstalled()
|
|
994
1159
|
if cmd == 'init' or cmd == 'gitc-init':
|
|
@@ -998,8 +1163,8 @@ def main(orig_args):
|
|
|
998
1163
|
_Init(args, gitc_init=(cmd == 'gitc-init'))
|
|
999
1164
|
except CloneFailure:
|
|
1000
1165
|
path = os.path.join(repodir, S_repo)
|
|
1001
|
-
|
|
1002
|
-
|
|
1166
|
+
print("fatal: cloning the git-repo repository failed, will remove "
|
|
1167
|
+
"'%s' " % path, file=sys.stderr)
|
|
1003
1168
|
shutil.rmtree(path, ignore_errors=True)
|
|
1004
1169
|
sys.exit(1)
|
|
1005
1170
|
repo_main, rel_repo_dir = _FindRepo()
|
|
@@ -1009,6 +1174,10 @@ def main(orig_args):
|
|
|
1009
1174
|
if my_main:
|
|
1010
1175
|
repo_main = my_main
|
|
1011
1176
|
|
|
1177
|
+
if not repo_main:
|
|
1178
|
+
print("fatal: unable to find repo entry point", file=sys.stderr)
|
|
1179
|
+
sys.exit(1)
|
|
1180
|
+
|
|
1012
1181
|
ver_str = '.'.join(map(str, VERSION))
|
|
1013
1182
|
me = [sys.executable, repo_main,
|
|
1014
1183
|
'--repo-dir=%s' % rel_repo_dir,
|
|
@@ -1016,21 +1185,10 @@ def main(orig_args):
|
|
|
1016
1185
|
'--wrapper-path=%s' % wrapper_path,
|
|
1017
1186
|
'--']
|
|
1018
1187
|
me.extend(orig_args)
|
|
1019
|
-
me
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
sys.exit(subprocess.call(me))
|
|
1023
|
-
else:
|
|
1024
|
-
os.execv(sys.executable, me)
|
|
1025
|
-
except OSError as e:
|
|
1026
|
-
_print("fatal: unable to start %s" % repo_main, file=sys.stderr)
|
|
1027
|
-
_print("fatal: %s" % e, file=sys.stderr)
|
|
1028
|
-
sys.exit(148)
|
|
1188
|
+
exec_command(me)
|
|
1189
|
+
print("fatal: unable to start %s" % repo_main, file=sys.stderr)
|
|
1190
|
+
sys.exit(148)
|
|
1029
1191
|
|
|
1030
1192
|
|
|
1031
1193
|
if __name__ == '__main__':
|
|
1032
|
-
if ver[0] == 3:
|
|
1033
|
-
_print('warning: Python 3 support is currently experimental. YMMV.\n'
|
|
1034
|
-
'Please use Python 2.7 instead.',
|
|
1035
|
-
file=sys.stderr)
|
|
1036
1194
|
main(sys.argv[1:])
|