libv8 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 +7 -0
- data/.gitignore +19 -0
- data/.gitmodules +3 -0
- data/.rspec +3 -0
- data/.travis.yml +45 -0
- data/CHANGELOG.md +111 -0
- data/Gemfile +4 -0
- data/README.md +152 -0
- data/Rakefile +125 -0
- data/appveyor.yml.disabled +36 -0
- data/ext/libv8/arch.rb +20 -0
- data/ext/libv8/builder.rb +106 -0
- data/ext/libv8/extconf.rb +7 -0
- data/ext/libv8/location.rb +89 -0
- data/ext/libv8/paths.rb +28 -0
- data/lib/libv8.rb +9 -0
- data/lib/libv8/version.rb +3 -0
- data/libv8.gemspec +30 -0
- data/scaleway.png +0 -0
- data/spec/location_spec.rb +69 -0
- data/spec/spec_helper.rb +4 -0
- data/thefrontside.png +0 -0
- data/vendor/depot_tools/.cipd_impl.ps1 +129 -0
- data/vendor/depot_tools/.gitattributes +55 -0
- data/vendor/depot_tools/.gitignore +92 -0
- data/vendor/depot_tools/.style.yapf +4 -0
- data/vendor/depot_tools/.vpython +55 -0
- data/vendor/depot_tools/.vpython3 +23 -0
- data/vendor/depot_tools/CROS_OWNERS +7 -0
- data/vendor/depot_tools/GOMA_OWNERS +9 -0
- data/vendor/depot_tools/LICENSE +27 -0
- data/vendor/depot_tools/LUCI_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +39 -0
- data/vendor/depot_tools/PRESUBMIT.py +150 -0
- data/vendor/depot_tools/README.gclient.md +67 -0
- data/vendor/depot_tools/README.git-cl.md +99 -0
- data/vendor/depot_tools/README.md +78 -0
- data/vendor/depot_tools/WATCHLISTS +26 -0
- data/vendor/depot_tools/auth.py +163 -0
- data/vendor/depot_tools/autoninja +36 -0
- data/vendor/depot_tools/autoninja.bat +33 -0
- data/vendor/depot_tools/autoninja.py +148 -0
- data/vendor/depot_tools/bb +12 -0
- data/vendor/depot_tools/bb.bat +7 -0
- data/vendor/depot_tools/bootstrap/README.md +155 -0
- data/vendor/depot_tools/bootstrap/bootstrap.py +356 -0
- data/vendor/depot_tools/bootstrap/git-bash.template.sh +12 -0
- data/vendor/depot_tools/bootstrap/git.template.bat +5 -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/profile.d.python.sh +20 -0
- data/vendor/depot_tools/bootstrap/python27.bat +46 -0
- data/vendor/depot_tools/bootstrap/python3.bat +46 -0
- data/vendor/depot_tools/bootstrap/win_tools.bat +79 -0
- data/vendor/depot_tools/bootstrap_python3 +35 -0
- data/vendor/depot_tools/breakpad.py +12 -0
- data/vendor/depot_tools/cbuildbot +1 -0
- data/vendor/depot_tools/chrome_set_ver +1 -0
- data/vendor/depot_tools/cipd +247 -0
- data/vendor/depot_tools/cipd.bat +67 -0
- data/vendor/depot_tools/cipd_bin_setup.bat +6 -0
- data/vendor/depot_tools/cipd_bin_setup.sh +22 -0
- data/vendor/depot_tools/cipd_client_version +1 -0
- data/vendor/depot_tools/cipd_client_version.digests +22 -0
- data/vendor/depot_tools/cipd_manifest.txt +63 -0
- data/vendor/depot_tools/cipd_manifest.versions +438 -0
- data/vendor/depot_tools/cit +8 -0
- data/vendor/depot_tools/cit.bat +12 -0
- data/vendor/depot_tools/cit.py +167 -0
- data/vendor/depot_tools/clang-format +8 -0
- data/vendor/depot_tools/clang-format.bat +12 -0
- data/vendor/depot_tools/clang_format.py +79 -0
- data/vendor/depot_tools/clang_format_merge_driver +8 -0
- data/vendor/depot_tools/clang_format_merge_driver.bat +12 -0
- data/vendor/depot_tools/clang_format_merge_driver.py +69 -0
- data/vendor/depot_tools/codereview.settings +6 -0
- data/vendor/depot_tools/compile_single_file +8 -0
- data/vendor/depot_tools/compile_single_file.bat +11 -0
- data/vendor/depot_tools/compile_single_file.py +79 -0
- data/vendor/depot_tools/cpplint.bat +11 -0
- data/vendor/depot_tools/cpplint.py +6097 -0
- data/vendor/depot_tools/cpplint_chromium.py +50 -0
- data/vendor/depot_tools/cros +87 -0
- data/vendor/depot_tools/cros_sdk +1 -0
- data/vendor/depot_tools/crosjobs +13 -0
- data/vendor/depot_tools/detect_host_arch.py +55 -0
- data/vendor/depot_tools/dirmd +12 -0
- data/vendor/depot_tools/dirmd.bat +7 -0
- data/vendor/depot_tools/download_from_google_storage +8 -0
- data/vendor/depot_tools/download_from_google_storage.bat +12 -0
- data/vendor/depot_tools/download_from_google_storage.py +634 -0
- data/vendor/depot_tools/ensure_bootstrap +53 -0
- data/vendor/depot_tools/fetch +21 -0
- data/vendor/depot_tools/fetch.bat +28 -0
- data/vendor/depot_tools/fetch.py +319 -0
- data/vendor/depot_tools/fetch_configs/android.py +34 -0
- data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
- data/vendor/depot_tools/fetch_configs/breakpad.py +44 -0
- data/vendor/depot_tools/fetch_configs/chromium.py +66 -0
- data/vendor/depot_tools/fetch_configs/config_util.py +52 -0
- data/vendor/depot_tools/fetch_configs/crashpad.py +41 -0
- data/vendor/depot_tools/fetch_configs/dart.py +45 -0
- data/vendor/depot_tools/fetch_configs/depot_tools.py +44 -0
- data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
- data/vendor/depot_tools/fetch_configs/goma_client.py +41 -0
- data/vendor/depot_tools/fetch_configs/gyp.py +41 -0
- data/vendor/depot_tools/fetch_configs/infra.py +40 -0
- data/vendor/depot_tools/fetch_configs/infra_internal.py +45 -0
- data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
- data/vendor/depot_tools/fetch_configs/ios.py +34 -0
- data/vendor/depot_tools/fetch_configs/ios_internal.py +39 -0
- data/vendor/depot_tools/fetch_configs/nacl.py +48 -0
- data/vendor/depot_tools/fetch_configs/naclports.py +47 -0
- data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
- data/vendor/depot_tools/fetch_configs/pdfium.py +40 -0
- data/vendor/depot_tools/fetch_configs/skia.py +41 -0
- data/vendor/depot_tools/fetch_configs/skia_buildbot.py +41 -0
- data/vendor/depot_tools/fetch_configs/syzygy.py +41 -0
- data/vendor/depot_tools/fetch_configs/v8.py +44 -0
- data/vendor/depot_tools/fetch_configs/webrtc.py +52 -0
- data/vendor/depot_tools/fetch_configs/webrtc_android.py +34 -0
- data/vendor/depot_tools/fetch_configs/webrtc_ios.py +34 -0
- data/vendor/depot_tools/fix_encoding.py +385 -0
- data/vendor/depot_tools/gclient +38 -0
- data/vendor/depot_tools/gclient-new-workdir.py +124 -0
- data/vendor/depot_tools/gclient.bat +32 -0
- data/vendor/depot_tools/gclient.py +3198 -0
- data/vendor/depot_tools/gclient_completion.sh +76 -0
- data/vendor/depot_tools/gclient_eval.py +891 -0
- data/vendor/depot_tools/gclient_paths.py +152 -0
- data/vendor/depot_tools/gclient_scm.py +1615 -0
- data/vendor/depot_tools/gclient_utils.py +1280 -0
- data/vendor/depot_tools/gerrit_client.py +151 -0
- data/vendor/depot_tools/gerrit_util.py +996 -0
- data/vendor/depot_tools/git-cache +6 -0
- data/vendor/depot_tools/git-cl +6 -0
- data/vendor/depot_tools/git-crrev-parse +53 -0
- data/vendor/depot_tools/git-drover +6 -0
- data/vendor/depot_tools/git-find-releases +6 -0
- data/vendor/depot_tools/git-footers +6 -0
- data/vendor/depot_tools/git-freeze +8 -0
- data/vendor/depot_tools/git-gs +9 -0
- data/vendor/depot_tools/git-hyper-blame +6 -0
- data/vendor/depot_tools/git-map +6 -0
- data/vendor/depot_tools/git-map-branches +6 -0
- data/vendor/depot_tools/git-mark-merge-base +6 -0
- data/vendor/depot_tools/git-nav-downstream +6 -0
- data/vendor/depot_tools/git-nav-upstream +6 -0
- data/vendor/depot_tools/git-new-branch +6 -0
- data/vendor/depot_tools/git-number +6 -0
- data/vendor/depot_tools/git-rebase-update +6 -0
- data/vendor/depot_tools/git-rename-branch +6 -0
- data/vendor/depot_tools/git-reparent-branch +6 -0
- data/vendor/depot_tools/git-retry +8 -0
- data/vendor/depot_tools/git-runhooks +23 -0
- data/vendor/depot_tools/git-squash-branch +6 -0
- data/vendor/depot_tools/git-templates/description +3 -0
- data/vendor/depot_tools/git-templates/hooks/applypatch-msg +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-applypatch +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-checkout +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-commit +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-merge +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-update +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-applypatch +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-auto-gc +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-commit +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-rebase +4 -0
- data/vendor/depot_tools/git-templates/hooks/prepare-commit-msg +4 -0
- data/vendor/depot_tools/git-templates/info/exclude +6 -0
- data/vendor/depot_tools/git-thaw +13 -0
- data/vendor/depot_tools/git-upstream-diff +9 -0
- data/vendor/depot_tools/git_cache.py +786 -0
- data/vendor/depot_tools/git_cl.py +5158 -0
- data/vendor/depot_tools/git_cl_completion.sh +48 -0
- data/vendor/depot_tools/git_common.py +1101 -0
- data/vendor/depot_tools/git_dates.py +62 -0
- data/vendor/depot_tools/git_drover.py +469 -0
- data/vendor/depot_tools/git_find_releases.py +67 -0
- data/vendor/depot_tools/git_footers.py +261 -0
- data/vendor/depot_tools/git_freezer.py +40 -0
- data/vendor/depot_tools/git_hyper_blame.py +391 -0
- data/vendor/depot_tools/git_map.py +166 -0
- data/vendor/depot_tools/git_map_branches.py +354 -0
- data/vendor/depot_tools/git_mark_merge_base.py +73 -0
- data/vendor/depot_tools/git_nav_downstream.py +69 -0
- data/vendor/depot_tools/git_new_branch.py +82 -0
- data/vendor/depot_tools/git_number.py +301 -0
- data/vendor/depot_tools/git_rebase_update.py +351 -0
- data/vendor/depot_tools/git_rename_branch.py +55 -0
- data/vendor/depot_tools/git_reparent_branch.py +101 -0
- data/vendor/depot_tools/git_retry.py +181 -0
- data/vendor/depot_tools/git_squash_branch.py +28 -0
- data/vendor/depot_tools/git_upstream_diff.py +64 -0
- data/vendor/depot_tools/gn +8 -0
- data/vendor/depot_tools/gn.bat +12 -0
- data/vendor/depot_tools/gn.py +78 -0
- 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 +190 -0
- data/vendor/depot_tools/gsutil.py.bat +23 -0
- data/vendor/depot_tools/gsutil.vpython +120 -0
- data/vendor/depot_tools/infra/README.md +1 -0
- data/vendor/depot_tools/infra/config/OWNERS +7 -0
- data/vendor/depot_tools/infra/config/README.md +1 -0
- data/vendor/depot_tools/infra/config/recipes.cfg +26 -0
- data/vendor/depot_tools/led +12 -0
- data/vendor/depot_tools/led.bat +7 -0
- data/vendor/depot_tools/lockfile.py +116 -0
- data/vendor/depot_tools/luci-auth +13 -0
- data/vendor/depot_tools/luci-auth.bat +8 -0
- data/vendor/depot_tools/lucicfg +12 -0
- data/vendor/depot_tools/lucicfg.bat +7 -0
- data/vendor/depot_tools/mac_toolchain +12 -0
- data/vendor/depot_tools/man/html/depot_tools.html +934 -0
- data/vendor/depot_tools/man/html/depot_tools_tutorial.html +1593 -0
- data/vendor/depot_tools/man/html/git-cl.html +1033 -0
- data/vendor/depot_tools/man/html/git-drover.html +1048 -0
- data/vendor/depot_tools/man/html/git-footers.html +878 -0
- data/vendor/depot_tools/man/html/git-freeze.html +859 -0
- data/vendor/depot_tools/man/html/git-hyper-blame.html +878 -0
- data/vendor/depot_tools/man/html/git-map-branches.html +904 -0
- data/vendor/depot_tools/man/html/git-map.html +887 -0
- data/vendor/depot_tools/man/html/git-mark-merge-base.html +826 -0
- data/vendor/depot_tools/man/html/git-nav-downstream.html +844 -0
- data/vendor/depot_tools/man/html/git-nav-upstream.html +853 -0
- data/vendor/depot_tools/man/html/git-new-branch.html +932 -0
- data/vendor/depot_tools/man/html/git-rebase-update.html +961 -0
- data/vendor/depot_tools/man/html/git-rename-branch.html +794 -0
- data/vendor/depot_tools/man/html/git-reparent-branch.html +847 -0
- data/vendor/depot_tools/man/html/git-retry.html +858 -0
- data/vendor/depot_tools/man/html/git-squash-branch.html +881 -0
- data/vendor/depot_tools/man/html/git-thaw.html +794 -0
- data/vendor/depot_tools/man/html/git-upstream-diff.html +923 -0
- data/vendor/depot_tools/man/man1/git-cl.1 +198 -0
- data/vendor/depot_tools/man/man1/git-drover.1 +330 -0
- data/vendor/depot_tools/man/man1/git-footers.1 +144 -0
- data/vendor/depot_tools/man/man1/git-freeze.1 +113 -0
- data/vendor/depot_tools/man/man1/git-hyper-blame.1 +128 -0
- data/vendor/depot_tools/man/man1/git-map-branches.1 +210 -0
- data/vendor/depot_tools/man/man1/git-map.1 +179 -0
- data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +69 -0
- data/vendor/depot_tools/man/man1/git-nav-downstream.1 +112 -0
- data/vendor/depot_tools/man/man1/git-nav-upstream.1 +122 -0
- data/vendor/depot_tools/man/man1/git-new-branch.1 +176 -0
- data/vendor/depot_tools/man/man1/git-rebase-update.1 +177 -0
- data/vendor/depot_tools/man/man1/git-rename-branch.1 +53 -0
- data/vendor/depot_tools/man/man1/git-reparent-branch.1 +93 -0
- data/vendor/depot_tools/man/man1/git-retry.1 +108 -0
- data/vendor/depot_tools/man/man1/git-squash-branch.1 +129 -0
- data/vendor/depot_tools/man/man1/git-thaw.1 +54 -0
- data/vendor/depot_tools/man/man1/git-upstream-diff.1 +153 -0
- data/vendor/depot_tools/man/man7/depot_tools.7 +139 -0
- data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +1061 -0
- data/vendor/depot_tools/man/push_to_gs.sh +4 -0
- data/vendor/depot_tools/man/src/.gitignore +5 -0
- data/vendor/depot_tools/man/src/_aliases.txt +5 -0
- data/vendor/depot_tools/man/src/_footer.txt +8 -0
- data/vendor/depot_tools/man/src/_git-cl_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-drover_desc.helper.txt +2 -0
- data/vendor/depot_tools/man/src/_git-footers_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-freeze_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-hyper-blame_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-map-branches_desc.helper.txt +4 -0
- data/vendor/depot_tools/man/src/_git-map_desc.helper.txt +3 -0
- data/vendor/depot_tools/man/src/_git-mark-merge-base_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-nav-downstream_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-nav-upstream_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-new-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-rebase-update_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-rename-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-reparent-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-retry_desc.helper.txt +2 -0
- data/vendor/depot_tools/man/src/_git-squash-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-thaw_desc.helper.txt +2 -0
- data/vendor/depot_tools/man/src/_git-upstream-diff_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_helper_prefix.txt +1 -0
- data/vendor/depot_tools/man/src/asciidoc-override.css +7 -0
- data/vendor/depot_tools/man/src/common_demo_functions.sh +84 -0
- data/vendor/depot_tools/man/src/demo_repo.sh +43 -0
- data/vendor/depot_tools/man/src/depot_tools.txt +28 -0
- data/vendor/depot_tools/man/src/depot_tools_tutorial.demo.walkthrough.sh +155 -0
- data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +432 -0
- data/vendor/depot_tools/man/src/filter_demo_output.py +141 -0
- data/vendor/depot_tools/man/src/git-cl.txt +119 -0
- data/vendor/depot_tools/man/src/git-drover.demo.1.sh +22 -0
- data/vendor/depot_tools/man/src/git-drover.demo.2.sh +23 -0
- data/vendor/depot_tools/man/src/git-drover.demo.3.sh +27 -0
- data/vendor/depot_tools/man/src/git-drover.demo.4.sh +39 -0
- data/vendor/depot_tools/man/src/git-drover.demo.common.sh +19 -0
- data/vendor/depot_tools/man/src/git-drover.txt +102 -0
- data/vendor/depot_tools/man/src/git-footers.demo.1.sh +17 -0
- data/vendor/depot_tools/man/src/git-footers.txt +71 -0
- data/vendor/depot_tools/man/src/git-freeze.demo.1.sh +23 -0
- data/vendor/depot_tools/man/src/git-freeze.txt +54 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.demo.1.sh +3 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.demo.2.sh +4 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.demo.common.sh +57 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.txt +85 -0
- data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +8 -0
- data/vendor/depot_tools/man/src/git-map-branches.txt +64 -0
- data/vendor/depot_tools/man/src/git-map.demo.1.sh +3 -0
- data/vendor/depot_tools/man/src/git-map.txt +67 -0
- data/vendor/depot_tools/man/src/git-mark-merge-base.txt +46 -0
- data/vendor/depot_tools/man/src/git-nav-downstream.demo.1.sh +12 -0
- data/vendor/depot_tools/man/src/git-nav-downstream.txt +40 -0
- data/vendor/depot_tools/man/src/git-nav-upstream.demo.1.sh +12 -0
- data/vendor/depot_tools/man/src/git-nav-upstream.txt +39 -0
- data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +17 -0
- data/vendor/depot_tools/man/src/git-new-branch.txt +82 -0
- data/vendor/depot_tools/man/src/git-rebase-update.txt +141 -0
- data/vendor/depot_tools/man/src/git-rename-branch.txt +28 -0
- data/vendor/depot_tools/man/src/git-reparent-branch.txt +61 -0
- data/vendor/depot_tools/man/src/git-retry.txt +67 -0
- data/vendor/depot_tools/man/src/git-squash-branch.demo.1.sh +12 -0
- data/vendor/depot_tools/man/src/git-squash-branch.txt +59 -0
- data/vendor/depot_tools/man/src/git-thaw.txt +29 -0
- data/vendor/depot_tools/man/src/git-upstream-diff.txt +107 -0
- data/vendor/depot_tools/man/src/make_docs.sh +260 -0
- data/vendor/depot_tools/man/src/prep_demo_repo.sh +103 -0
- data/vendor/depot_tools/metrics.README.md +101 -0
- data/vendor/depot_tools/metrics.py +297 -0
- data/vendor/depot_tools/metrics_utils.py +293 -0
- data/vendor/depot_tools/my_activity.py +971 -0
- data/vendor/depot_tools/ninja +44 -0
- data/vendor/depot_tools/ninja-linux32 +0 -0
- data/vendor/depot_tools/ninja-linux64 +0 -0
- data/vendor/depot_tools/ninja-mac +0 -0
- data/vendor/depot_tools/ninja.exe +0 -0
- data/vendor/depot_tools/ninjalog.README.md +64 -0
- data/vendor/depot_tools/ninjalog_uploader.py +233 -0
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +125 -0
- data/vendor/depot_tools/owners.py +641 -0
- data/vendor/depot_tools/owners_finder.py +385 -0
- data/vendor/depot_tools/post_build_ninja_summary.py +350 -0
- data/vendor/depot_tools/presubmit_canned_checks.py +1655 -0
- data/vendor/depot_tools/presubmit_support.py +1923 -0
- data/vendor/depot_tools/profile.xml +8 -0
- data/vendor/depot_tools/prpc +13 -0
- data/vendor/depot_tools/prpc.bat +8 -0
- data/vendor/depot_tools/pylint +9 -0
- 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/pylint.bat +12 -0
- data/vendor/depot_tools/pylint_main.py +45 -0
- data/vendor/depot_tools/pylintrc +349 -0
- data/vendor/depot_tools/python-bin/python3 +7 -0
- data/vendor/depot_tools/python_runner.sh +60 -0
- data/vendor/depot_tools/rdb +12 -0
- data/vendor/depot_tools/rdb.bat +7 -0
- data/vendor/depot_tools/recipes/OWNERS +4 -0
- data/vendor/depot_tools/recipes/README.recipes.md +1079 -0
- data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +38 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +516 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +118 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +194 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +210 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +214 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_HEAD.json +65 -0
- 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 +212 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +210 -0
- 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 +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +209 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +193 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +261 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +261 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +8 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +308 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/__init__.py +0 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +1258 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +93 -0
- 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 +35 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +9 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +455 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +82 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +411 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +315 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +313 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +313 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.py +187 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.py +59 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +93 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/__init__.py +9 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +75 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +13 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +428 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +462 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +238 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +240 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +238 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +95 -0
- 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 +36 -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 +92 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/__init__.py +8 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +178 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +284 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +73 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/test_api.py +53 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +11 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +405 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +219 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +216 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +164 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +220 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +239 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +290 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +220 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +222 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +111 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +221 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +219 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +170 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/resources/git_setup.py +52 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/test_api.py +18 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +50 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/config.py +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +105 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +47 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/OWNERS +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +257 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +596 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +93 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +251 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/test_api.py +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/__init__.py +4 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +222 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +247 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +92 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/resources/gsutil_smart_retry.py +69 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +36 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +140 -0
- 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 +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +42 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +27 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +251 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +27 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +19 -0
- 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/__init__.py +18 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +264 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +57 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +190 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +190 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
- 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/__init__.py +25 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +108 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +21 -0
- data/vendor/depot_tools/recipes/recipes.py +249 -0
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +175 -0
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.py +56 -0
- data/vendor/depot_tools/recipes/trigger_recipe_roller.txt +13 -0
- data/vendor/depot_tools/repo +1194 -0
- data/vendor/depot_tools/roll-dep +21 -0
- data/vendor/depot_tools/roll-dep.bat +21 -0
- data/vendor/depot_tools/roll_dep.py +282 -0
- data/vendor/depot_tools/scm.py +415 -0
- data/vendor/depot_tools/setup_color.py +130 -0
- data/vendor/depot_tools/split_cl.py +263 -0
- data/vendor/depot_tools/subcommand.py +261 -0
- data/vendor/depot_tools/subprocess2.py +258 -0
- data/vendor/depot_tools/third_party/__init__.py +5 -0
- data/vendor/depot_tools/third_party/colorama/LICENSE.txt +27 -0
- data/vendor/depot_tools/third_party/colorama/README.chromium +12 -0
- data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
- data/vendor/depot_tools/third_party/colorama/__init__.py +6 -0
- data/vendor/depot_tools/third_party/colorama/ansi.py +102 -0
- data/vendor/depot_tools/third_party/colorama/ansitowin32.py +257 -0
- data/vendor/depot_tools/third_party/colorama/initialise.py +80 -0
- data/vendor/depot_tools/third_party/colorama/win32.py +152 -0
- data/vendor/depot_tools/third_party/colorama/winterm.py +169 -0
- data/vendor/depot_tools/third_party/coverage/AUTHORS.txt +43 -0
- data/vendor/depot_tools/third_party/coverage/PKG-INFO +41 -0
- data/vendor/depot_tools/third_party/coverage/README.chromium +13 -0
- data/vendor/depot_tools/third_party/coverage/__init__.py +120 -0
- data/vendor/depot_tools/third_party/coverage/__main__.py +4 -0
- data/vendor/depot_tools/third_party/coverage/annotate.py +101 -0
- data/vendor/depot_tools/third_party/coverage/backward.py +184 -0
- data/vendor/depot_tools/third_party/coverage/bytecode.py +75 -0
- data/vendor/depot_tools/third_party/coverage/cmdline.py +740 -0
- data/vendor/depot_tools/third_party/coverage/codeunit.py +145 -0
- data/vendor/depot_tools/third_party/coverage/collector.py +353 -0
- data/vendor/depot_tools/third_party/coverage/config.py +213 -0
- data/vendor/depot_tools/third_party/coverage/control.py +776 -0
- data/vendor/depot_tools/third_party/coverage/data.py +278 -0
- data/vendor/depot_tools/third_party/coverage/debug.py +54 -0
- data/vendor/depot_tools/third_party/coverage/execfile.py +171 -0
- data/vendor/depot_tools/third_party/coverage/files.py +309 -0
- data/vendor/depot_tools/third_party/coverage/fullcoverage/encodings.py +57 -0
- data/vendor/depot_tools/third_party/coverage/html.py +387 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/coverage_html.js +376 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/index.html +104 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery-1.4.3.min.js +166 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.hotkeys.js +99 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.isonscreen.js +53 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.min.js +166 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.tablesorter.min.js +2 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/keybd_closed.png +0 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/keybd_open.png +0 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/pyfile.html +90 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/style.css +300 -0
- data/vendor/depot_tools/third_party/coverage/misc.py +163 -0
- data/vendor/depot_tools/third_party/coverage/parser.py +666 -0
- data/vendor/depot_tools/third_party/coverage/phystokens.py +208 -0
- data/vendor/depot_tools/third_party/coverage/report.py +92 -0
- data/vendor/depot_tools/third_party/coverage/results.py +286 -0
- data/vendor/depot_tools/third_party/coverage/summary.py +86 -0
- data/vendor/depot_tools/third_party/coverage/templite.py +166 -0
- data/vendor/depot_tools/third_party/coverage/version.py +9 -0
- data/vendor/depot_tools/third_party/coverage/xmlreport.py +155 -0
- data/vendor/depot_tools/third_party/httplib2/LICENSE +1339 -0
- data/vendor/depot_tools/third_party/httplib2/README.chromium +15 -0
- data/vendor/depot_tools/third_party/httplib2/__init__.py +1780 -0
- data/vendor/depot_tools/third_party/httplib2/cacerts.txt +2196 -0
- data/vendor/depot_tools/third_party/httplib2/iri2uri.py +110 -0
- data/vendor/depot_tools/third_party/httplib2/socks.py +448 -0
- data/vendor/depot_tools/third_party/repo/COPYING +202 -0
- data/vendor/depot_tools/third_party/repo/README.chromium +4 -0
- data/vendor/depot_tools/third_party/repo/__init__.py +0 -0
- data/vendor/depot_tools/third_party/repo/progress.py +117 -0
- data/vendor/depot_tools/third_party/retry_decorator/LICENSE.google +30 -0
- data/vendor/depot_tools/third_party/retry_decorator/__init__.py +0 -0
- data/vendor/depot_tools/third_party/retry_decorator/decorators.py +45 -0
- data/vendor/depot_tools/third_party/schema/.editorconfig +15 -0
- data/vendor/depot_tools/third_party/schema/.gitignore +174 -0
- data/vendor/depot_tools/third_party/schema/.travis.yml +37 -0
- data/vendor/depot_tools/third_party/schema/LICENSE-MIT +19 -0
- data/vendor/depot_tools/third_party/schema/MANIFEST.in +1 -0
- data/vendor/depot_tools/third_party/schema/README.chromium +12 -0
- data/vendor/depot_tools/third_party/schema/README.rst +382 -0
- data/vendor/depot_tools/third_party/schema/__init__.py +1 -0
- data/vendor/depot_tools/third_party/schema/schema.py +338 -0
- data/vendor/depot_tools/third_party/schema/setup.cfg +5 -0
- data/vendor/depot_tools/third_party/schema/setup.py +30 -0
- data/vendor/depot_tools/third_party/schema/test_schema.py +556 -0
- data/vendor/depot_tools/third_party/schema/tox.ini +33 -0
- data/vendor/depot_tools/third_party/six/LICENSE.txt +18 -0
- data/vendor/depot_tools/third_party/six/README.chromium +10 -0
- data/vendor/depot_tools/third_party/six/__init__.py +762 -0
- data/vendor/depot_tools/update_depot_tools +138 -0
- data/vendor/depot_tools/update_depot_tools.bat +65 -0
- data/vendor/depot_tools/update_depot_tools_toggle.py +38 -0
- data/vendor/depot_tools/upload_metrics.py +26 -0
- data/vendor/depot_tools/upload_to_google_storage.py +306 -0
- data/vendor/depot_tools/vpython +42 -0
- data/vendor/depot_tools/vpython.bat +7 -0
- data/vendor/depot_tools/vpython3 +55 -0
- data/vendor/depot_tools/vpython3.bat +12 -0
- data/vendor/depot_tools/watchlists.py +141 -0
- data/vendor/depot_tools/weekly +54 -0
- data/vendor/depot_tools/win32imports.py +61 -0
- data/vendor/depot_tools/win_toolchain/OWNERS +2 -0
- data/vendor/depot_tools/win_toolchain/README.md +74 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +599 -0
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +524 -0
- data/vendor/depot_tools/wtf +81 -0
- data/vendor/depot_tools/yapf +21 -0
- data/vendor/depot_tools/yapf.bat +12 -0
- data/vendor/depot_tools/zsh-goodies/README +6 -0
- data/vendor/depot_tools/zsh-goodies/_gclient +14 -0
- metadata +729 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
:: Copyright 2017 The Chromium Authors. All rights reserved.
|
|
3
|
+
:: Use of this source code is governed by a BSD-style license that can be
|
|
4
|
+
:: found in the LICENSE file.
|
|
5
|
+
|
|
6
|
+
setlocal
|
|
7
|
+
|
|
8
|
+
REM Set unique build ID.
|
|
9
|
+
FOR /f "usebackq tokens=*" %%a in (`python -c "from __future__ import print_function; import uuid; print(uuid.uuid4())"`) do set AUTONINJA_BUILD_ID=%%a
|
|
10
|
+
|
|
11
|
+
REM If a build performance summary has been requested then also set NINJA_STATUS
|
|
12
|
+
REM to trigger more verbose status updates. In particular this makes it possible
|
|
13
|
+
REM to see how quickly process creation is happening - often a critical clue on
|
|
14
|
+
REM Windows. The trailing space is intentional.
|
|
15
|
+
if "%NINJA_SUMMARIZE_BUILD%" == "1" set NINJA_STATUS=[%%r processes, %%f/%%t @ %%o/s : %%es ]
|
|
16
|
+
|
|
17
|
+
REM Execute whatever is printed by autoninja.py.
|
|
18
|
+
REM Also print it to reassure that the right settings are being used.
|
|
19
|
+
FOR /f "usebackq tokens=*" %%a in (`vpython %~dp0autoninja.py "%*"`) do echo %%a & %%a
|
|
20
|
+
@if errorlevel 1 goto buildfailure
|
|
21
|
+
|
|
22
|
+
REM Use call to invoke vpython script here, because we use vpython via vpython.bat.
|
|
23
|
+
@if "%NINJA_SUMMARIZE_BUILD%" == "1" call vpython.bat %~dp0post_build_ninja_summary.py %*
|
|
24
|
+
@call vpython.bat %~dp0ninjalog_uploader_wrapper.py --cmdline %*
|
|
25
|
+
|
|
26
|
+
exit /b
|
|
27
|
+
:buildfailure
|
|
28
|
+
|
|
29
|
+
@call vpython.bat %~dp0ninjalog_uploader_wrapper.py --cmdline %*
|
|
30
|
+
|
|
31
|
+
REM Return an error code of 1 so that if a developer types:
|
|
32
|
+
REM "autoninja chrome && chrome" then chrome won't run if the build fails.
|
|
33
|
+
cmd /c exit 1
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
#!/usr/bin/env vpython
|
|
2
|
+
# Copyright (c) 2017 The Chromium Authors. All rights reserved.
|
|
3
|
+
# Use of this source code is governed by a BSD-style license that can be
|
|
4
|
+
# found in the LICENSE file.
|
|
5
|
+
|
|
6
|
+
"""
|
|
7
|
+
This script (intended to be invoked by autoninja or autoninja.bat) detects
|
|
8
|
+
whether a build is using goma. If so it runs with a large -j value, and
|
|
9
|
+
otherwise it chooses a small one. This auto-adjustment makes using goma simpler
|
|
10
|
+
and safer, and avoids errors that can cause slow goma builds or swap-storms
|
|
11
|
+
on non-goma builds.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
# [VPYTHON:BEGIN]
|
|
15
|
+
# wheel: <
|
|
16
|
+
# name: "infra/python/wheels/psutil/${vpython_platform}"
|
|
17
|
+
# version: "version:5.6.2"
|
|
18
|
+
# >
|
|
19
|
+
# [VPYTHON:END]
|
|
20
|
+
|
|
21
|
+
from __future__ import print_function
|
|
22
|
+
|
|
23
|
+
import os
|
|
24
|
+
import psutil
|
|
25
|
+
import re
|
|
26
|
+
import sys
|
|
27
|
+
|
|
28
|
+
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
|
|
29
|
+
|
|
30
|
+
# The -t tools are incompatible with -j
|
|
31
|
+
t_specified = False
|
|
32
|
+
j_specified = False
|
|
33
|
+
output_dir = '.'
|
|
34
|
+
input_args = sys.argv
|
|
35
|
+
# On Windows the autoninja.bat script passes along the arguments enclosed in
|
|
36
|
+
# double quotes. This prevents multiple levels of parsing of the special '^'
|
|
37
|
+
# characters needed when compiling a single file but means that this script gets
|
|
38
|
+
# called with a single argument containing all of the actual arguments,
|
|
39
|
+
# separated by spaces. When this case is detected we need to do argument
|
|
40
|
+
# splitting ourselves. This means that arguments containing actual spaces are
|
|
41
|
+
# not supported by autoninja, but that is not a real limitation.
|
|
42
|
+
if (sys.platform.startswith('win') and len(sys.argv) == 2 and
|
|
43
|
+
input_args[1].count(' ') > 0):
|
|
44
|
+
input_args = sys.argv[:1] + sys.argv[1].split()
|
|
45
|
+
|
|
46
|
+
# Ninja uses getopt_long, which allow to intermix non-option arguments.
|
|
47
|
+
# To leave non supported parameters untouched, we do not use getopt.
|
|
48
|
+
for index, arg in enumerate(input_args[1:]):
|
|
49
|
+
if arg.startswith('-j'):
|
|
50
|
+
j_specified = True
|
|
51
|
+
if arg.startswith('-t'):
|
|
52
|
+
t_specified = True
|
|
53
|
+
if arg == '-C':
|
|
54
|
+
# + 1 to get the next argument and +1 because we trimmed off input_args[0]
|
|
55
|
+
output_dir = input_args[index + 2]
|
|
56
|
+
elif arg.startswith('-C'):
|
|
57
|
+
# Support -Cout/Default
|
|
58
|
+
output_dir = arg[2:]
|
|
59
|
+
|
|
60
|
+
use_goma = False
|
|
61
|
+
use_jumbo_build = False
|
|
62
|
+
|
|
63
|
+
# Attempt to auto-detect goma usage. We support gn-based builds, where we
|
|
64
|
+
# look for args.gn in the build tree, and cmake-based builds where we look for
|
|
65
|
+
# rules.ninja.
|
|
66
|
+
if os.path.exists(os.path.join(output_dir, 'args.gn')):
|
|
67
|
+
with open(os.path.join(output_dir, 'args.gn')) as file_handle:
|
|
68
|
+
for line in file_handle:
|
|
69
|
+
# This regex pattern copied from create_installer_archive.py
|
|
70
|
+
if re.match(r'^\s*use_goma\s*=\s*true(\s*$|\s*#.*$)', line):
|
|
71
|
+
use_goma = True
|
|
72
|
+
continue
|
|
73
|
+
match_use_jumbo_build = re.match(
|
|
74
|
+
r'^\s*use_jumbo_build\s*=\s*true(\s*$|\s*#.*$)', line)
|
|
75
|
+
if match_use_jumbo_build:
|
|
76
|
+
use_jumbo_build = True
|
|
77
|
+
continue
|
|
78
|
+
elif os.path.exists(os.path.join(output_dir, 'rules.ninja')):
|
|
79
|
+
with open(os.path.join(output_dir, 'rules.ninja')) as file_handle:
|
|
80
|
+
for line in file_handle:
|
|
81
|
+
if re.match(r'^\s*command\s*=\s*\S+gomacc', line):
|
|
82
|
+
use_goma = True
|
|
83
|
+
break
|
|
84
|
+
|
|
85
|
+
# If GOMA_DISABLED is set to "true", "t", "yes", "y", or "1" (case-insensitive)
|
|
86
|
+
# then gomacc will use the local compiler instead of doing a goma compile. This
|
|
87
|
+
# is convenient if you want to briefly disable goma. It avoids having to rebuild
|
|
88
|
+
# the world when transitioning between goma/non-goma builds. However, it is not
|
|
89
|
+
# as fast as doing a "normal" non-goma build because an extra process is created
|
|
90
|
+
# for each compile step. Checking this environment variable ensures that
|
|
91
|
+
# autoninja uses an appropriate -j value in this situation.
|
|
92
|
+
goma_disabled_env = os.environ.get('GOMA_DISABLED', '0').lower()
|
|
93
|
+
if goma_disabled_env in ['true', 't', 'yes', 'y', '1']:
|
|
94
|
+
use_goma = False
|
|
95
|
+
|
|
96
|
+
# Specify ninja.exe on Windows so that ninja.bat can call autoninja and not
|
|
97
|
+
# be called back.
|
|
98
|
+
ninja_exe = 'ninja.exe' if sys.platform.startswith('win') else 'ninja'
|
|
99
|
+
ninja_exe_path = os.path.join(SCRIPT_DIR, ninja_exe)
|
|
100
|
+
|
|
101
|
+
# Use absolute path for ninja path,
|
|
102
|
+
# or fail to execute ninja if depot_tools is not in PATH.
|
|
103
|
+
args = [ninja_exe_path] + input_args[1:]
|
|
104
|
+
|
|
105
|
+
num_cores = psutil.cpu_count()
|
|
106
|
+
if not j_specified and not t_specified:
|
|
107
|
+
if use_goma:
|
|
108
|
+
args.append('-j')
|
|
109
|
+
core_multiplier = int(os.environ.get('NINJA_CORE_MULTIPLIER', '40'))
|
|
110
|
+
j_value = num_cores * core_multiplier
|
|
111
|
+
|
|
112
|
+
if sys.platform.startswith('win'):
|
|
113
|
+
# On windows, j value higher than 1000 does not improve build performance.
|
|
114
|
+
j_value = min(j_value, 1000)
|
|
115
|
+
elif sys.platform == 'darwin':
|
|
116
|
+
# On Mac, j value higher than 500 causes 'Too many open files' error
|
|
117
|
+
# (crbug.com/936864).
|
|
118
|
+
j_value = min(j_value, 500)
|
|
119
|
+
|
|
120
|
+
args.append('%d' % j_value)
|
|
121
|
+
else:
|
|
122
|
+
j_value = num_cores
|
|
123
|
+
# Ninja defaults to |num_cores + 2|
|
|
124
|
+
j_value += int(os.environ.get('NINJA_CORE_ADDITION', '2'))
|
|
125
|
+
if use_jumbo_build:
|
|
126
|
+
# Compiling a jumbo .o can easily use 1-2GB of memory. Leaving 2GB per
|
|
127
|
+
# process avoids memory swap/compression storms when also considering
|
|
128
|
+
# already in-use memory.
|
|
129
|
+
physical_ram = psutil.virtual_memory().total
|
|
130
|
+
GB = 1024 * 1024 * 1024
|
|
131
|
+
j_value = min(j_value, physical_ram / (2 * GB))
|
|
132
|
+
args.append('-j')
|
|
133
|
+
args.append('%d' % j_value)
|
|
134
|
+
|
|
135
|
+
# On Windows, fully quote the path so that the command processor doesn't think
|
|
136
|
+
# the whole output is the command.
|
|
137
|
+
# On Linux and Mac, if people put depot_tools in directories with ' ',
|
|
138
|
+
# shell would misunderstand ' ' as a path separation.
|
|
139
|
+
# TODO(yyanagisawa): provide proper quoting for Windows.
|
|
140
|
+
# see https://cs.chromium.org/chromium/src/tools/mb/mb.py
|
|
141
|
+
for i in range(len(args)):
|
|
142
|
+
if (i == 0 and sys.platform.startswith('win')) or ' ' in args[i]:
|
|
143
|
+
args[i] = '"%s"' % args[i].replace('"', '\\"')
|
|
144
|
+
|
|
145
|
+
if os.environ.get('NINJA_SUMMARIZE_BUILD', '0') == '1':
|
|
146
|
+
args += ['-d', 'stats']
|
|
147
|
+
|
|
148
|
+
print(' '.join(args))
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Copyright 2019 The Chromium Authors. All rights reserved.
|
|
4
|
+
# Use of this source code is governed by a BSD-style license that can be
|
|
5
|
+
# found in the LICENSE file.
|
|
6
|
+
|
|
7
|
+
MYPATH=$(dirname "${BASH_SOURCE[0]}")
|
|
8
|
+
|
|
9
|
+
source "$MYPATH/cipd_bin_setup.sh"
|
|
10
|
+
cipd_bin_setup &> /dev/null
|
|
11
|
+
|
|
12
|
+
exec "$MYPATH/.cipd_bin/bb" "$@"
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Windows binary tool bootstrap
|
|
2
|
+
|
|
3
|
+
This directory has the 'magic' for the `depot_tools` windows binary update
|
|
4
|
+
mechanisms.
|
|
5
|
+
|
|
6
|
+
A previous Python may actually be in use when it is run, preventing us
|
|
7
|
+
from replacing it outright without breaking running code. To
|
|
8
|
+
ommodate this, and Python cleanup, we handle Python in two stages:
|
|
9
|
+
|
|
10
|
+
1. Use CIPD to install both Git and Python at once.
|
|
11
|
+
2. Use "win_tools.py" as a post-processor to install generated files and
|
|
12
|
+
fix-ups.
|
|
13
|
+
|
|
14
|
+
## Software bootstrapped
|
|
15
|
+
* Python 2 and 3 (https://www.python.org/)
|
|
16
|
+
* Git for Windows (https://git-for-windows.github.io/)
|
|
17
|
+
|
|
18
|
+
## Mechanism
|
|
19
|
+
|
|
20
|
+
Any time a user runs `gclient` on windows, it will invoke the `depot_tools`
|
|
21
|
+
autoupdate script [depot_tools.bat](../../update_depot_tools.bat). This, in
|
|
22
|
+
turn, will run [win_tools.bat](./win_tools.bat), which does the bulk of the
|
|
23
|
+
work.
|
|
24
|
+
|
|
25
|
+
`win_tools.bat` will successively look to see if the local version of the binary
|
|
26
|
+
package is present, and if so, if it's the expected version. If either of those
|
|
27
|
+
cases is not true, it will download and unpack the respective binary.
|
|
28
|
+
|
|
29
|
+
Installation of Git and Python is done by the [win_tools.bat](./win_tools.bat)
|
|
30
|
+
script, which uses CIPD (via the [cipd](/cipd.bat) bootstrap) to acquire and
|
|
31
|
+
install each package into the root of the `depot_tools` repository. Afterwards,
|
|
32
|
+
the [win_tools.py](./win_tools.py) Python script is invoked to install stubs,
|
|
33
|
+
wrappers, and support scripts into `depot_tools` for end-users.
|
|
34
|
+
|
|
35
|
+
### Manifest
|
|
36
|
+
|
|
37
|
+
The Git and Python versions are specified in [manifest.txt](./manifest.txt).
|
|
38
|
+
|
|
39
|
+
There is an associated file,
|
|
40
|
+
[manifest_bleeding_edge.txt](./manifest_bleeding_edge.txt), that can be used
|
|
41
|
+
to canary new versions on select bots. Any bots with a `.bleeding_edge` file
|
|
42
|
+
in their `depot_tools` root will automatically use the bleeding edge manifest.
|
|
43
|
+
This allows opt-in systems to test against new versions of Python or Git. Once
|
|
44
|
+
those versions have been verified correct, `manifest.txt` can be updated to the
|
|
45
|
+
same specification, which will cause the remainder of systems to update.
|
|
46
|
+
|
|
47
|
+
### Bundles
|
|
48
|
+
|
|
49
|
+
Git and Python bundle construction is documented in
|
|
50
|
+
[infra packaging](https://chromium.googlesource.com/infra/infra/+/master/doc/packaging/).
|
|
51
|
+
|
|
52
|
+
Note that in order for the update to take effect, `gclient` currently needs to
|
|
53
|
+
run twice. The first time it will update the `depot_tools` repo, and the second
|
|
54
|
+
time it will see the new git version and update to it. This is a bug that should
|
|
55
|
+
be fixed, in case you're reading this and this paragraph infuriates you more
|
|
56
|
+
than the rest of this README.
|
|
57
|
+
|
|
58
|
+
## Testing
|
|
59
|
+
|
|
60
|
+
After any modification to this script set, a test sequence should be run on a
|
|
61
|
+
Windows bot.
|
|
62
|
+
|
|
63
|
+
The post-processing will regenerate "python.bat" and "python3.bat" to point to
|
|
64
|
+
the current Python instance. Any previous Python installations will stick
|
|
65
|
+
around, but new invocations will use the new instance. Old installations will
|
|
66
|
+
die off either due to processes terminating or systems restarting. When this
|
|
67
|
+
happens, they will be cleaned up by the post-processing script.
|
|
68
|
+
|
|
69
|
+
Testing
|
|
70
|
+
=======
|
|
71
|
+
|
|
72
|
+
For each of the following test scenarios, run these commands and verify that
|
|
73
|
+
they are working:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
:: Assert that `gclient` invocation will update (and do the update).
|
|
77
|
+
gclient version
|
|
78
|
+
|
|
79
|
+
:: Assert that Python fundamentally works.
|
|
80
|
+
python -c "import Queue; print dir(Queue)"
|
|
81
|
+
|
|
82
|
+
:: Assert that Python 3 fundamentally works.
|
|
83
|
+
python3 -c "import queue; print(dir(queue))"
|
|
84
|
+
|
|
85
|
+
:: Assert that Python scripts work from `cmd.exe`.
|
|
86
|
+
git map-branches
|
|
87
|
+
|
|
88
|
+
:: Assert that `git bash` works.
|
|
89
|
+
git bash
|
|
90
|
+
|
|
91
|
+
## (Within `git bash`) assert that Python fundamentally works.
|
|
92
|
+
python -c "import Queue; print dir(Queue)"
|
|
93
|
+
## (Within `git bash`) assert that Python 3 fundamentally works.
|
|
94
|
+
python3 -c "import queue; print(dir(queue))"
|
|
95
|
+
## (Within `git bash`) assert that Python scripts work.
|
|
96
|
+
git map-branches
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Run this sequence through the following upgrade/downgrade procedures:
|
|
100
|
+
|
|
101
|
+
* Cold default installation.
|
|
102
|
+
- Clean `depot_tools` via: `git clean -x -f -d .`
|
|
103
|
+
- Run through test steps.
|
|
104
|
+
- Test upgrade to bleeding edge (if it differs).
|
|
105
|
+
- Run `python.bat` in another shell, keep it open
|
|
106
|
+
- Run `python3.bat` in another shell, keep it open
|
|
107
|
+
- Add `.bleeding_edge` to `depot_tools` root.
|
|
108
|
+
- Run through test steps.
|
|
109
|
+
- In the old `python.bat` shell, run `import Queue`, confirm that it
|
|
110
|
+
works.
|
|
111
|
+
- In the old `python3.bat` shell, run `import queue`, confirm that it
|
|
112
|
+
works.
|
|
113
|
+
- Close the Python shell, run `gclient version`, ensure that old directory
|
|
114
|
+
is cleaned.
|
|
115
|
+
* Cold bleeding edge installation.
|
|
116
|
+
- Clean `depot_tools` via: `git clean -x -f -d .`
|
|
117
|
+
- Add `.bleeding_edge` to `depot_tools` root.
|
|
118
|
+
- Run through test steps.
|
|
119
|
+
- Test downgrade to default (if it differs).
|
|
120
|
+
- Run `python.bat` in another shell, keep it open
|
|
121
|
+
- Run `python3.bat` in another shell, keep it open
|
|
122
|
+
- Delete `.bleeding_edge` from `depot_tools` root.
|
|
123
|
+
- Run through test steps.
|
|
124
|
+
- In the old `python.bat` shell, run `import Queue`, confirm that it
|
|
125
|
+
works.
|
|
126
|
+
- In the old `python3.bat` shell, run `import queue`, confirm that it
|
|
127
|
+
works.
|
|
128
|
+
- Close the Python shell, run `gclient version`, ensure that old directory
|
|
129
|
+
is cleaned.
|
|
130
|
+
* Warm bleeding edge upgrade.
|
|
131
|
+
- Clean `depot_tools` via: `git clean -x -f -d .`
|
|
132
|
+
- Run `gclient version` to load defaults.
|
|
133
|
+
- Run `python.bat` in another shell, keep it open
|
|
134
|
+
- Run `python3.bat` in another shell, keep it open
|
|
135
|
+
- Add `.bleeding_edge` to `depot_tools` root.
|
|
136
|
+
- Run through test steps.
|
|
137
|
+
- In the old `python.bat` shell, run `import Queue`, confirm that it
|
|
138
|
+
works.
|
|
139
|
+
- In the old `python3.bat` shell, run `import queue`, confirm that it
|
|
140
|
+
works.
|
|
141
|
+
- Close the Python shell, run `gclient version`, ensure that old directory is
|
|
142
|
+
cleaned.
|
|
143
|
+
* Upgradable and Revertible.
|
|
144
|
+
- Checkout current `HEAD`.
|
|
145
|
+
- Run `gclient version` to load HEAD toolchain (initial).
|
|
146
|
+
- Apply the candidate patch.
|
|
147
|
+
- Run through test steps (upgrade).
|
|
148
|
+
- Checkout current `HEAD` again.
|
|
149
|
+
- Run `gclient version` to load HEAD toolchain (revert).
|
|
150
|
+
- Run through test steps.
|
|
151
|
+
|
|
152
|
+
This will take some time, but will ensure that all affected bots and users
|
|
153
|
+
should not encounter any problems due to the change. As systems and users are
|
|
154
|
+
migrated off of this implicit bootstrap, the testing procedure will become less
|
|
155
|
+
critical.
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
# Copyright 2016 The Chromium Authors. All rights reserved.
|
|
2
|
+
# Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
# found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
import argparse
|
|
6
|
+
import collections
|
|
7
|
+
import contextlib
|
|
8
|
+
import fnmatch
|
|
9
|
+
import hashlib
|
|
10
|
+
import logging
|
|
11
|
+
import os
|
|
12
|
+
import platform
|
|
13
|
+
import posixpath
|
|
14
|
+
import shutil
|
|
15
|
+
import string
|
|
16
|
+
import subprocess
|
|
17
|
+
import sys
|
|
18
|
+
import tempfile
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
THIS_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
22
|
+
ROOT_DIR = os.path.abspath(os.path.join(THIS_DIR, '..'))
|
|
23
|
+
|
|
24
|
+
DEVNULL = open(os.devnull, 'w')
|
|
25
|
+
|
|
26
|
+
IS_WIN = sys.platform.startswith('win')
|
|
27
|
+
BAT_EXT = '.bat' if IS_WIN else ''
|
|
28
|
+
|
|
29
|
+
# Top-level stubs to generate that fall through to executables within the Git
|
|
30
|
+
# directory.
|
|
31
|
+
WIN_GIT_STUBS = {
|
|
32
|
+
'git.bat': 'cmd\\git.exe',
|
|
33
|
+
'gitk.bat': 'cmd\\gitk.exe',
|
|
34
|
+
'ssh.bat': 'usr\\bin\\ssh.exe',
|
|
35
|
+
'ssh-keygen.bat': 'usr\\bin\\ssh-keygen.exe',
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# Accumulated template parameters for generated stubs.
|
|
40
|
+
class Template(collections.namedtuple('Template', (
|
|
41
|
+
'PYTHON_RELDIR', 'PYTHON_BIN_RELDIR', 'PYTHON_BIN_RELDIR_UNIX',
|
|
42
|
+
'PYTHON3_BIN_RELDIR', 'PYTHON3_BIN_RELDIR_UNIX', 'GIT_BIN_RELDIR',
|
|
43
|
+
'GIT_BIN_RELDIR_UNIX', 'GIT_PROGRAM',
|
|
44
|
+
))):
|
|
45
|
+
|
|
46
|
+
@classmethod
|
|
47
|
+
def empty(cls):
|
|
48
|
+
return cls(**{k: None for k in cls._fields})
|
|
49
|
+
|
|
50
|
+
def maybe_install(self, name, dst_path):
|
|
51
|
+
"""Installs template |name| to |dst_path| if it has changed.
|
|
52
|
+
|
|
53
|
+
This loads the template |name| from THIS_DIR, resolves template parameters,
|
|
54
|
+
and installs it to |dst_path|. See `maybe_update` for more information.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
name (str): The name of the template to install.
|
|
58
|
+
dst_path (str): The destination filesystem path.
|
|
59
|
+
|
|
60
|
+
Returns (bool): True if |dst_path| was updated, False otherwise.
|
|
61
|
+
"""
|
|
62
|
+
template_path = os.path.join(THIS_DIR, name)
|
|
63
|
+
with open(template_path, 'r', encoding='utf8') as fd:
|
|
64
|
+
t = string.Template(fd.read())
|
|
65
|
+
return maybe_update(t.safe_substitute(self._asdict()), dst_path)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def maybe_update(content, dst_path):
|
|
69
|
+
"""Writes |content| to |dst_path| if |dst_path| does not already match.
|
|
70
|
+
|
|
71
|
+
This function will ensure that there is a file at |dst_path| containing
|
|
72
|
+
|content|. If |dst_path| already exists and contains |content|, no operation
|
|
73
|
+
will be performed, preserving filesystem modification times and avoiding
|
|
74
|
+
potential write contention.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
content (str): The file content.
|
|
78
|
+
dst_path (str): The destination filesystem path.
|
|
79
|
+
|
|
80
|
+
Returns (bool): True if |dst_path| was updated, False otherwise.
|
|
81
|
+
"""
|
|
82
|
+
# If the path already exists and matches the new content, refrain from writing
|
|
83
|
+
# a new one.
|
|
84
|
+
if os.path.exists(dst_path):
|
|
85
|
+
with open(dst_path, 'r', encoding='utf-8') as fd:
|
|
86
|
+
if fd.read() == content:
|
|
87
|
+
return False
|
|
88
|
+
|
|
89
|
+
logging.debug('Updating %r', dst_path)
|
|
90
|
+
with open(dst_path, 'w', encoding='utf-8') as fd:
|
|
91
|
+
fd.write(content)
|
|
92
|
+
os.chmod(dst_path, 0o755)
|
|
93
|
+
return True
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def maybe_copy(src_path, dst_path):
|
|
97
|
+
"""Writes the content of |src_path| to |dst_path| if needed.
|
|
98
|
+
|
|
99
|
+
See `maybe_update` for more information.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
src_path (str): The content source filesystem path.
|
|
103
|
+
dst_path (str): The destination filesystem path.
|
|
104
|
+
|
|
105
|
+
Returns (bool): True if |dst_path| was updated, False otherwise.
|
|
106
|
+
"""
|
|
107
|
+
with open(src_path, 'r', encoding='utf-8') as fd:
|
|
108
|
+
content = fd.read()
|
|
109
|
+
return maybe_update(content, dst_path)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def call_if_outdated(stamp_path, stamp_version, fn):
|
|
113
|
+
"""Invokes |fn| if the stamp at |stamp_path| doesn't match |stamp_version|.
|
|
114
|
+
|
|
115
|
+
This can be used to keep a filesystem record of whether an operation has been
|
|
116
|
+
performed. The record is stored at |stamp_path|. To invalidate a record,
|
|
117
|
+
change the value of |stamp_version|.
|
|
118
|
+
|
|
119
|
+
After |fn| completes successfully, |stamp_path| will be updated to match
|
|
120
|
+
|stamp_version|, preventing the same update from happening in the future.
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
stamp_path (str): The filesystem path of the stamp file.
|
|
124
|
+
stamp_version (str): The desired stamp version.
|
|
125
|
+
fn (callable): A callable to invoke if the current stamp version doesn't
|
|
126
|
+
match |stamp_version|.
|
|
127
|
+
|
|
128
|
+
Returns (bool): True if an update occurred.
|
|
129
|
+
"""
|
|
130
|
+
|
|
131
|
+
stamp_version = stamp_version.strip()
|
|
132
|
+
if os.path.isfile(stamp_path):
|
|
133
|
+
with open(stamp_path, 'r', encoding='utf-8') as fd:
|
|
134
|
+
current_version = fd.read().strip()
|
|
135
|
+
if current_version == stamp_version:
|
|
136
|
+
return False
|
|
137
|
+
|
|
138
|
+
fn()
|
|
139
|
+
|
|
140
|
+
with open(stamp_path, 'w', encoding='utf-8') as fd:
|
|
141
|
+
fd.write(stamp_version)
|
|
142
|
+
return True
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def _in_use(path):
|
|
146
|
+
"""Checks if a Windows file is in use.
|
|
147
|
+
|
|
148
|
+
When Windows is using an executable, it prevents other writers from
|
|
149
|
+
modifying or deleting that executable. We can safely test for an in-use
|
|
150
|
+
file by opening it in write mode and checking whether or not there was
|
|
151
|
+
an error.
|
|
152
|
+
|
|
153
|
+
Returns (bool): True if the file was in use, False if not.
|
|
154
|
+
"""
|
|
155
|
+
try:
|
|
156
|
+
with open(path, 'r+'):
|
|
157
|
+
return False
|
|
158
|
+
except IOError:
|
|
159
|
+
return True
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def _toolchain_in_use(toolchain_path):
|
|
163
|
+
"""Returns (bool): True if a toolchain rooted at |path| is in use.
|
|
164
|
+
"""
|
|
165
|
+
# Look for Python files that may be in use.
|
|
166
|
+
for python_dir in (
|
|
167
|
+
os.path.join(toolchain_path, 'python', 'bin'), # CIPD
|
|
168
|
+
toolchain_path, # Legacy ZIP distributions.
|
|
169
|
+
):
|
|
170
|
+
for component in (
|
|
171
|
+
os.path.join(python_dir, 'python.exe'),
|
|
172
|
+
os.path.join(python_dir, 'DLLs', 'unicodedata.pyd'),
|
|
173
|
+
):
|
|
174
|
+
if os.path.isfile(component) and _in_use(component):
|
|
175
|
+
return True
|
|
176
|
+
# Look for Pytho:n 3 files that may be in use.
|
|
177
|
+
python_dir = os.path.join(toolchain_path, 'python3', 'bin')
|
|
178
|
+
for component in (
|
|
179
|
+
os.path.join(python_dir, 'python3.exe'),
|
|
180
|
+
os.path.join(python_dir, 'DLLs', 'unicodedata.pyd'),
|
|
181
|
+
):
|
|
182
|
+
if os.path.isfile(component) and _in_use(component):
|
|
183
|
+
return True
|
|
184
|
+
return False
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def _check_call(argv, stdin_input=None, **kwargs):
|
|
189
|
+
"""Wrapper for subprocess.check_call that adds logging."""
|
|
190
|
+
logging.info('running %r', argv)
|
|
191
|
+
if stdin_input is not None:
|
|
192
|
+
kwargs['stdin'] = subprocess.PIPE
|
|
193
|
+
proc = subprocess.Popen(argv, **kwargs)
|
|
194
|
+
proc.communicate(input=stdin_input)
|
|
195
|
+
if proc.returncode:
|
|
196
|
+
raise subprocess.CalledProcessError(proc.returncode, argv, None)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def _safe_rmtree(path):
|
|
200
|
+
if not os.path.exists(path):
|
|
201
|
+
return
|
|
202
|
+
|
|
203
|
+
def _make_writable_and_remove(path):
|
|
204
|
+
st = os.stat(path)
|
|
205
|
+
new_mode = st.st_mode | 0o200
|
|
206
|
+
if st.st_mode == new_mode:
|
|
207
|
+
return False
|
|
208
|
+
try:
|
|
209
|
+
os.chmod(path, new_mode)
|
|
210
|
+
os.remove(path)
|
|
211
|
+
return True
|
|
212
|
+
except Exception:
|
|
213
|
+
return False
|
|
214
|
+
|
|
215
|
+
def _on_error(function, path, excinfo):
|
|
216
|
+
if not _make_writable_and_remove(path):
|
|
217
|
+
logging.warning('Failed to %s: %s (%s)', function, path, excinfo)
|
|
218
|
+
|
|
219
|
+
shutil.rmtree(path, onerror=_on_error)
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
def clean_up_old_installations(skip_dir):
|
|
223
|
+
"""Removes Python installations other than |skip_dir|.
|
|
224
|
+
|
|
225
|
+
This includes an "in-use" check against the "python.exe" in a given directory
|
|
226
|
+
to avoid removing Python executables that are currently ruinning. We need
|
|
227
|
+
this because our Python bootstrap may be run after (and by) other software
|
|
228
|
+
that is using the bootstrapped Python!
|
|
229
|
+
"""
|
|
230
|
+
root_contents = os.listdir(ROOT_DIR)
|
|
231
|
+
for f in ('win_tools-*_bin', 'python27*_bin', 'git-*_bin', 'bootstrap-*_bin'):
|
|
232
|
+
for entry in fnmatch.filter(root_contents, f):
|
|
233
|
+
full_entry = os.path.join(ROOT_DIR, entry)
|
|
234
|
+
if full_entry == skip_dir or not os.path.isdir(full_entry):
|
|
235
|
+
continue
|
|
236
|
+
|
|
237
|
+
logging.info('Cleaning up old installation %r', entry)
|
|
238
|
+
if not _toolchain_in_use(full_entry):
|
|
239
|
+
_safe_rmtree(full_entry)
|
|
240
|
+
else:
|
|
241
|
+
logging.info('Toolchain at %r is in-use; skipping', full_entry)
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
# Version of "git_postprocess" system configuration (see |git_postprocess|).
|
|
245
|
+
GIT_POSTPROCESS_VERSION = '2'
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
def git_get_mingw_dir(git_directory):
|
|
249
|
+
"""Returns (str) The "mingw" directory in a Git installation, or None."""
|
|
250
|
+
for candidate in ('mingw64', 'mingw32'):
|
|
251
|
+
mingw_dir = os.path.join(git_directory, candidate)
|
|
252
|
+
if os.path.isdir(mingw_dir):
|
|
253
|
+
return mingw_dir
|
|
254
|
+
return None
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def git_postprocess(template, git_directory):
|
|
258
|
+
# Update depot_tools files for "git help <command>"
|
|
259
|
+
mingw_dir = git_get_mingw_dir(git_directory)
|
|
260
|
+
if mingw_dir:
|
|
261
|
+
docsrc = os.path.join(ROOT_DIR, 'man', 'html')
|
|
262
|
+
git_docs_dir = os.path.join(mingw_dir, 'share', 'doc', 'git-doc')
|
|
263
|
+
for name in os.listdir(docsrc):
|
|
264
|
+
maybe_copy(
|
|
265
|
+
os.path.join(docsrc, name),
|
|
266
|
+
os.path.join(git_docs_dir, name))
|
|
267
|
+
else:
|
|
268
|
+
logging.info('Could not find mingw directory for %r.', git_directory)
|
|
269
|
+
|
|
270
|
+
# Create Git templates and configure its base layout.
|
|
271
|
+
for stub_name, relpath in WIN_GIT_STUBS.items():
|
|
272
|
+
stub_template = template._replace(GIT_PROGRAM=relpath)
|
|
273
|
+
stub_template.maybe_install(
|
|
274
|
+
'git.template.bat',
|
|
275
|
+
os.path.join(ROOT_DIR, stub_name))
|
|
276
|
+
|
|
277
|
+
# Set-up our system configuration environment. The following set of
|
|
278
|
+
# parameters is versioned by "GIT_POSTPROCESS_VERSION". If they change,
|
|
279
|
+
# update "GIT_POSTPROCESS_VERSION" accordingly.
|
|
280
|
+
def configure_git_system():
|
|
281
|
+
git_bat_path = os.path.join(ROOT_DIR, 'git.bat')
|
|
282
|
+
_check_call([git_bat_path, 'config', '--system', 'core.autocrlf', 'false'])
|
|
283
|
+
_check_call([git_bat_path, 'config', '--system', 'core.filemode', 'false'])
|
|
284
|
+
_check_call([git_bat_path, 'config', '--system', 'core.preloadindex',
|
|
285
|
+
'true'])
|
|
286
|
+
_check_call([git_bat_path, 'config', '--system', 'core.fscache', 'true'])
|
|
287
|
+
_check_call([git_bat_path, 'config', '--system', 'protocol.version', '2'])
|
|
288
|
+
|
|
289
|
+
call_if_outdated(
|
|
290
|
+
os.path.join(git_directory, '.git_postprocess'),
|
|
291
|
+
GIT_POSTPROCESS_VERSION,
|
|
292
|
+
configure_git_system)
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def main(argv):
|
|
296
|
+
parser = argparse.ArgumentParser()
|
|
297
|
+
parser.add_argument('--verbose', action='store_true')
|
|
298
|
+
parser.add_argument('--bootstrap-name', required=True,
|
|
299
|
+
help='The directory of the Python installation.')
|
|
300
|
+
args = parser.parse_args(argv)
|
|
301
|
+
|
|
302
|
+
logging.basicConfig(level=logging.DEBUG if args.verbose else logging.WARN)
|
|
303
|
+
|
|
304
|
+
template = Template.empty()._replace(
|
|
305
|
+
PYTHON_RELDIR=os.path.join(args.bootstrap_name, 'python'),
|
|
306
|
+
PYTHON_BIN_RELDIR=os.path.join(args.bootstrap_name, 'python', 'bin'),
|
|
307
|
+
PYTHON_BIN_RELDIR_UNIX=posixpath.join(
|
|
308
|
+
args.bootstrap_name, 'python', 'bin'),
|
|
309
|
+
PYTHON3_BIN_RELDIR=os.path.join(args.bootstrap_name, 'python3', 'bin'),
|
|
310
|
+
PYTHON3_BIN_RELDIR_UNIX=posixpath.join(
|
|
311
|
+
args.bootstrap_name, 'python3', 'bin'),
|
|
312
|
+
GIT_BIN_RELDIR=os.path.join(args.bootstrap_name, 'git'),
|
|
313
|
+
GIT_BIN_RELDIR_UNIX=posixpath.join(args.bootstrap_name, 'git'))
|
|
314
|
+
|
|
315
|
+
bootstrap_dir = os.path.join(ROOT_DIR, args.bootstrap_name)
|
|
316
|
+
|
|
317
|
+
# Clean up any old Python and Git installations.
|
|
318
|
+
clean_up_old_installations(bootstrap_dir)
|
|
319
|
+
|
|
320
|
+
if IS_WIN:
|
|
321
|
+
git_postprocess(template, os.path.join(bootstrap_dir, 'git'))
|
|
322
|
+
templates = [
|
|
323
|
+
('git-bash.template.sh', 'git-bash', ROOT_DIR),
|
|
324
|
+
('python27.bat', 'python.bat', ROOT_DIR),
|
|
325
|
+
('python3.bat', 'python3.bat', ROOT_DIR),
|
|
326
|
+
]
|
|
327
|
+
for src_name, dst_name, dst_dir in templates:
|
|
328
|
+
# Re-evaluate and regenerate our root templated files.
|
|
329
|
+
template.maybe_install(src_name, os.path.join(dst_dir, dst_name))
|
|
330
|
+
|
|
331
|
+
# Emit our Python bin depot-tools-relative directory. This is read by
|
|
332
|
+
# python.bat, python3.bat, vpython[.bat] and vpython3[.bat] to identify the
|
|
333
|
+
# path of the current Python installation.
|
|
334
|
+
#
|
|
335
|
+
# We use this indirection so that upgrades can change this pointer to
|
|
336
|
+
# redirect "python.bat" to a new Python installation. We can't just update
|
|
337
|
+
# "python.bat" because batch file executions reload the batch file and seek
|
|
338
|
+
# to the previous cursor in between every command, so changing the batch
|
|
339
|
+
# file contents could invalidate any existing executions.
|
|
340
|
+
#
|
|
341
|
+
# The intention is that the batch file itself never needs to change when
|
|
342
|
+
# switching Python versions.
|
|
343
|
+
|
|
344
|
+
maybe_update(
|
|
345
|
+
template.PYTHON_BIN_RELDIR,
|
|
346
|
+
os.path.join(ROOT_DIR, 'python_bin_reldir.txt'))
|
|
347
|
+
|
|
348
|
+
maybe_update(
|
|
349
|
+
template.PYTHON3_BIN_RELDIR,
|
|
350
|
+
os.path.join(ROOT_DIR, 'python3_bin_reldir.txt'))
|
|
351
|
+
|
|
352
|
+
return 0
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
if __name__ == '__main__':
|
|
356
|
+
sys.exit(main(sys.argv[1:]))
|