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,138 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2012 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
|
+
# This script will try to sync the bootstrap directories and then defer control.
|
|
7
|
+
|
|
8
|
+
if [ "$USER" == "root" ];
|
|
9
|
+
then
|
|
10
|
+
echo Running depot tools as root is sad.
|
|
11
|
+
exit
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# Test if this script is running under a MSYS install. This is likely an error
|
|
15
|
+
# if it is, so we warn the user accordingly.
|
|
16
|
+
OUTPUT="$(uname | grep 'MSYS')"
|
|
17
|
+
MSYS=$?
|
|
18
|
+
if [ $MSYS = 0 ]; then
|
|
19
|
+
echo 'WARNING: It looks like you are running these tools from an MSYS shell'
|
|
20
|
+
echo '(as opposed to a MinGW shell). This shell is not supported and may'
|
|
21
|
+
echo 'fail in mysterious ways.'
|
|
22
|
+
echo
|
|
23
|
+
echo 'To run the supported MinGW shell, use `git bash`, or use `bin/bash.exe`'
|
|
24
|
+
echo 'in your MinGW installation, as opposed to `usr/bin/bash.exe`.'
|
|
25
|
+
echo
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Test if this script is running under a MinGW install. If it is, we will
|
|
29
|
+
# hardcode the paths to Git where possible.
|
|
30
|
+
OUTPUT="$(uname | grep 'MINGW')"
|
|
31
|
+
MINGW=$?
|
|
32
|
+
|
|
33
|
+
if [ $MINGW = 0 ]; then
|
|
34
|
+
base_dir="${0%/*}"
|
|
35
|
+
else
|
|
36
|
+
base_dir=$(dirname "$0")
|
|
37
|
+
if [ -L "$base_dir" ]; then
|
|
38
|
+
base_dir=`cd "$base_dir" && pwd -P`
|
|
39
|
+
fi
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
if [ -e "$base_dir/.disable_auto_update" ]; then
|
|
43
|
+
exit
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# We want to update the bundled tools even under MinGW.
|
|
47
|
+
if [ $MINGW = 0 ]; then
|
|
48
|
+
$COMSPEC //c `cygpath -w "$base_dir/bootstrap/win_tools.bat"`
|
|
49
|
+
case $? in
|
|
50
|
+
123)
|
|
51
|
+
# msys environment was upgraded, need to quit.
|
|
52
|
+
exit 123
|
|
53
|
+
;;
|
|
54
|
+
0)
|
|
55
|
+
;;
|
|
56
|
+
*)
|
|
57
|
+
exit $?
|
|
58
|
+
esac
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
CANONICAL_GIT_URL="https://chromium.googlesource.com/chromium/tools/depot_tools.git"
|
|
62
|
+
|
|
63
|
+
GIT="git"
|
|
64
|
+
if [ -e "$base_dir/git.bat" -a $MINGW = 0 ]; then
|
|
65
|
+
GIT="cmd.exe //c \"$base_dir\\git.bat\""
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
# Test git and git --version.
|
|
69
|
+
function test_git {
|
|
70
|
+
local GITV
|
|
71
|
+
GITV="$(eval "$GIT" --version)" || {
|
|
72
|
+
echo "git isn't installed, please install it"
|
|
73
|
+
exit 1
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
GITV="${GITV##* }" # Only examine last word (i.e. version number)
|
|
77
|
+
local GITD=( ${GITV//./ } ) # Split version number into decimals
|
|
78
|
+
if ((GITD[0] < 1 || (GITD[0] == 2 && GITD[1] < 8) )); then
|
|
79
|
+
echo "git version is ${GITV}, please update to a version later than 2.8"
|
|
80
|
+
exit 1
|
|
81
|
+
fi
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function update_git_repo {
|
|
85
|
+
remote_url=$(eval "$GIT" config --get remote.origin.url)
|
|
86
|
+
if [ -n "$remote_url" -a "$remote_url" != "$CANONICAL_GIT_URL" ]; then
|
|
87
|
+
echo "Your copy of depot_tools is configured to fetch from an obsolete URL:"
|
|
88
|
+
echo
|
|
89
|
+
echo " $remote_url"
|
|
90
|
+
echo
|
|
91
|
+
read -t 60 -p "OK to update it to $CANONICAL_GIT_URL ? [Y/n] " -n 1
|
|
92
|
+
STATUS=$?
|
|
93
|
+
echo
|
|
94
|
+
if [[ $STATUS -ne 0 ]]; then
|
|
95
|
+
echo "Timeout; not updating remote URL."
|
|
96
|
+
elif [ -z "$REPLY" -o "$REPLY" = "Y" -o "$REPLY" = "y" ]; then
|
|
97
|
+
eval "$GIT" config remote.origin.url "$CANONICAL_GIT_URL"
|
|
98
|
+
echo "Remote URL updated."
|
|
99
|
+
fi
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
git fetch -q origin &> /dev/null
|
|
103
|
+
local CHECKOUT_TXT STATUS
|
|
104
|
+
CHECKOUT_TXT=$(git checkout -q origin/master 2>&1)
|
|
105
|
+
STATUS=$?
|
|
106
|
+
if [[ $STATUS -ne 0 ]]; then
|
|
107
|
+
echo "depot_tools update failed. Conflict in $base_dir" >&2
|
|
108
|
+
echo "$CHECKOUT_TXT" >&2
|
|
109
|
+
fi
|
|
110
|
+
# Having python3 on depot_tools causes problems if users put depot_tools in
|
|
111
|
+
# PATH before system's python3, so remove it if present.
|
|
112
|
+
# See crbug.com/1017812.
|
|
113
|
+
if [[ -e python3 ]]; then
|
|
114
|
+
rm python3
|
|
115
|
+
fi
|
|
116
|
+
return $STATUS
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
# Update git checkouts.
|
|
120
|
+
if [ "X$DEPOT_TOOLS_UPDATE" != "X0" ]; then
|
|
121
|
+
if [ -e "$base_dir/.git" ]; then
|
|
122
|
+
cd "$base_dir"
|
|
123
|
+
update_git_repo
|
|
124
|
+
cd - > /dev/null
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
# Sync CIPD-boostrapped packages.
|
|
128
|
+
source "$base_dir/cipd_bin_setup.sh"
|
|
129
|
+
cipd_bin_setup
|
|
130
|
+
|
|
131
|
+
# Don't bootstrap Python 3 on windows, since it is already done by
|
|
132
|
+
# bootstrap/win_tools.bat.
|
|
133
|
+
if [ "X$MINGW" != "X0" -a "X$DEPOT_TOOLS_BOOTSTRAP_PYTHON3" != "X0" ]; then
|
|
134
|
+
source "$base_dir/bootstrap_python3"
|
|
135
|
+
bootstrap_python3
|
|
136
|
+
fi
|
|
137
|
+
fi
|
|
138
|
+
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
:: Copyright (c) 2012 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
|
+
:: This batch file will try to sync the root directory.
|
|
7
|
+
|
|
8
|
+
setlocal
|
|
9
|
+
|
|
10
|
+
:: Windows freaks out if a file is overwritten while it's being executed. Copy
|
|
11
|
+
:: this script off to a temporary location and reinvoke from there before
|
|
12
|
+
:: running any git commands.
|
|
13
|
+
IF "%~nx0"=="update_depot_tools.bat" (
|
|
14
|
+
COPY /Y "%~dp0update_depot_tools.bat" "%TEMP%\update_depot_tools_tmp.bat" >nul
|
|
15
|
+
if errorlevel 1 goto :EOF
|
|
16
|
+
REM Use call/exit to avoid leaving an orphaned window title.
|
|
17
|
+
call "%TEMP%\update_depot_tools_tmp.bat" "%~dp0" %*
|
|
18
|
+
exit /b
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
set DEPOT_TOOLS_DIR=%~1
|
|
22
|
+
SHIFT
|
|
23
|
+
|
|
24
|
+
:: Shall skip automatic update?
|
|
25
|
+
IF EXIST "%DEPOT_TOOLS_DIR%.disable_auto_update" GOTO :EOF
|
|
26
|
+
IF "%DEPOT_TOOLS_UPDATE%" == "0" GOTO :EOF
|
|
27
|
+
|
|
28
|
+
set GIT_URL=https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
|
29
|
+
|
|
30
|
+
:: Download git for the first time if it's not present.
|
|
31
|
+
call git --version > nul 2>&1
|
|
32
|
+
if %errorlevel% == 0 goto :GIT_UPDATE
|
|
33
|
+
call "%DEPOT_TOOLS_DIR%bootstrap\win_tools.bat"
|
|
34
|
+
if errorlevel 1 (
|
|
35
|
+
echo Error updating depot_tools, no revision tool found.
|
|
36
|
+
goto :EOF
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
:GIT_UPDATE
|
|
40
|
+
:: Now clear errorlevel so it can be set by other programs later.
|
|
41
|
+
set errorlevel=
|
|
42
|
+
|
|
43
|
+
cd /d "%DEPOT_TOOLS_DIR%."
|
|
44
|
+
call git config remote.origin.fetch > NUL
|
|
45
|
+
for /F %%x in ('git config --get remote.origin.url') DO (
|
|
46
|
+
IF not "%%x" == "%GIT_URL%" (
|
|
47
|
+
echo Your depot_tools checkout is configured to fetch from an obsolete URL
|
|
48
|
+
choice /N /T 60 /D N /M "Would you like to update it? [y/N]: "
|
|
49
|
+
IF not errorlevel 2 (
|
|
50
|
+
call git config remote.origin.url "%GIT_URL%"
|
|
51
|
+
)
|
|
52
|
+
)
|
|
53
|
+
)
|
|
54
|
+
call git fetch -q origin > NUL
|
|
55
|
+
call git checkout -q origin/master > NUL
|
|
56
|
+
if errorlevel 1 (
|
|
57
|
+
echo Failed to update depot_tools.
|
|
58
|
+
goto :EOF
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
:: Sync CIPD and CIPD client tools.
|
|
62
|
+
call "%~dp0\cipd_bin_setup.bat"
|
|
63
|
+
|
|
64
|
+
:: Update git and python
|
|
65
|
+
call "%DEPOT_TOOLS_DIR%bootstrap\win_tools.bat"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
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
|
+
"""Small utility script to enable/disable `depot_tools` automatic updating."""
|
|
7
|
+
|
|
8
|
+
import argparse
|
|
9
|
+
import datetime
|
|
10
|
+
import os
|
|
11
|
+
import sys
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
DEPOT_TOOLS_ROOT = os.path.abspath(os.path.dirname(__file__))
|
|
15
|
+
SENTINEL_PATH = os.path.join(DEPOT_TOOLS_ROOT, '.disable_auto_update')
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def main():
|
|
19
|
+
parser = argparse.ArgumentParser()
|
|
20
|
+
group = parser.add_mutually_exclusive_group(required=True)
|
|
21
|
+
group.add_argument('--enable', action='store_true',
|
|
22
|
+
help='Enable auto-updating.')
|
|
23
|
+
group.add_argument('--disable', action='store_true',
|
|
24
|
+
help='Disable auto-updating.')
|
|
25
|
+
args = parser.parse_args()
|
|
26
|
+
|
|
27
|
+
if args.enable:
|
|
28
|
+
if os.path.exists(SENTINEL_PATH):
|
|
29
|
+
os.unlink(SENTINEL_PATH)
|
|
30
|
+
if args.disable:
|
|
31
|
+
if not os.path.exists(SENTINEL_PATH):
|
|
32
|
+
with open(SENTINEL_PATH, 'w') as fd:
|
|
33
|
+
fd.write('Disabled by %s at %s\n' % (__file__, datetime.datetime.now()))
|
|
34
|
+
return 0
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
if __name__ == '__main__':
|
|
38
|
+
sys.exit(main())
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# Copyright (c) 2018 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
|
+
import sys
|
|
7
|
+
|
|
8
|
+
from third_party.six.moves import urllib
|
|
9
|
+
from third_party.six.moves import input # pylint: disable=redefined-builtin
|
|
10
|
+
|
|
11
|
+
import metrics_utils
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def main():
|
|
15
|
+
metrics = input()
|
|
16
|
+
try:
|
|
17
|
+
urllib.request.urlopen(
|
|
18
|
+
metrics_utils.APP_URL + '/upload', metrics.encode('utf-8'))
|
|
19
|
+
except (urllib.error.HTTPError, urllib.error.URLError):
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
return 0
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
if __name__ == '__main__':
|
|
26
|
+
sys.exit(main())
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# Copyright (c) 2012 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
|
+
"""Uploads files to Google Storage content addressed."""
|
|
7
|
+
|
|
8
|
+
from __future__ import print_function
|
|
9
|
+
|
|
10
|
+
import hashlib
|
|
11
|
+
import optparse
|
|
12
|
+
import os
|
|
13
|
+
|
|
14
|
+
try:
|
|
15
|
+
import Queue as queue
|
|
16
|
+
except ImportError: # For Py3 compatibility
|
|
17
|
+
import queue
|
|
18
|
+
|
|
19
|
+
import re
|
|
20
|
+
import stat
|
|
21
|
+
import sys
|
|
22
|
+
import tarfile
|
|
23
|
+
import threading
|
|
24
|
+
import time
|
|
25
|
+
|
|
26
|
+
from download_from_google_storage import get_sha1
|
|
27
|
+
from download_from_google_storage import Gsutil
|
|
28
|
+
from download_from_google_storage import PrinterThread
|
|
29
|
+
from download_from_google_storage import GSUTIL_DEFAULT_PATH
|
|
30
|
+
|
|
31
|
+
USAGE_STRING = """%prog [options] target [target2 ...].
|
|
32
|
+
Target is the file intended to be uploaded to Google Storage.
|
|
33
|
+
If target is "-", then a list of files will be taken from standard input
|
|
34
|
+
|
|
35
|
+
This script will generate a file (original filename).sha1 containing the
|
|
36
|
+
sha1 sum of the uploaded file.
|
|
37
|
+
It is recommended that the .sha1 file is checked into the repository,
|
|
38
|
+
the original file removed from the repository, and a hook added to the
|
|
39
|
+
DEPS file to call download_from_google_storage.py.
|
|
40
|
+
|
|
41
|
+
Example usages
|
|
42
|
+
--------------
|
|
43
|
+
|
|
44
|
+
Scan the current directory and upload all files larger than 1MB:
|
|
45
|
+
find . -name .svn -prune -o -size +1000k -type f -print0 | %prog -0 -b bkt -
|
|
46
|
+
(Replace "bkt" with the name of a writable bucket.)
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def get_md5(filename):
|
|
51
|
+
md5_calculator = hashlib.md5()
|
|
52
|
+
with open(filename, 'rb') as f:
|
|
53
|
+
while True:
|
|
54
|
+
chunk = f.read(1024*1024)
|
|
55
|
+
if not chunk:
|
|
56
|
+
break
|
|
57
|
+
md5_calculator.update(chunk)
|
|
58
|
+
return md5_calculator.hexdigest()
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def get_md5_cached(filename):
|
|
62
|
+
"""Don't calculate the MD5 if we can find a .md5 file."""
|
|
63
|
+
# See if we can find an existing MD5 sum stored in a file.
|
|
64
|
+
if os.path.exists('%s.md5' % filename):
|
|
65
|
+
with open('%s.md5' % filename, 'rb') as f:
|
|
66
|
+
md5_match = re.search('([a-z0-9]{32})', f.read().decode())
|
|
67
|
+
if md5_match:
|
|
68
|
+
return md5_match.group(1)
|
|
69
|
+
else:
|
|
70
|
+
md5_hash = get_md5(filename)
|
|
71
|
+
with open('%s.md5' % filename, 'wb') as f:
|
|
72
|
+
f.write(md5_hash.encode())
|
|
73
|
+
return md5_hash
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _upload_worker(
|
|
77
|
+
thread_num, upload_queue, base_url, gsutil, md5_lock, force,
|
|
78
|
+
use_md5, stdout_queue, ret_codes, gzip):
|
|
79
|
+
while True:
|
|
80
|
+
filename, sha1_sum = upload_queue.get()
|
|
81
|
+
if not filename:
|
|
82
|
+
break
|
|
83
|
+
file_url = '%s/%s' % (base_url, sha1_sum)
|
|
84
|
+
if gsutil.check_call('ls', file_url)[0] == 0 and not force:
|
|
85
|
+
# File exists, check MD5 hash.
|
|
86
|
+
_, out, _ = gsutil.check_call_with_retries('ls', '-L', file_url)
|
|
87
|
+
etag_match = re.search(r'ETag:\s+([a-z0-9]{32})', out)
|
|
88
|
+
if etag_match:
|
|
89
|
+
remote_md5 = etag_match.group(1)
|
|
90
|
+
# Calculate the MD5 checksum to match it to Google Storage's ETag.
|
|
91
|
+
with md5_lock:
|
|
92
|
+
if use_md5:
|
|
93
|
+
local_md5 = get_md5_cached(filename)
|
|
94
|
+
else:
|
|
95
|
+
local_md5 = get_md5(filename)
|
|
96
|
+
if local_md5 == remote_md5:
|
|
97
|
+
stdout_queue.put(
|
|
98
|
+
'%d> File %s already exists and MD5 matches, upload skipped' %
|
|
99
|
+
(thread_num, filename))
|
|
100
|
+
continue
|
|
101
|
+
stdout_queue.put('%d> Uploading %s...' % (
|
|
102
|
+
thread_num, filename))
|
|
103
|
+
gsutil_args = ['cp']
|
|
104
|
+
if gzip:
|
|
105
|
+
gsutil_args.extend(['-z', gzip])
|
|
106
|
+
gsutil_args.extend([filename, file_url])
|
|
107
|
+
code, _, err = gsutil.check_call_with_retries(*gsutil_args)
|
|
108
|
+
if code != 0:
|
|
109
|
+
ret_codes.put(
|
|
110
|
+
(code,
|
|
111
|
+
'Encountered error on uploading %s to %s\n%s' %
|
|
112
|
+
(filename, file_url, err)))
|
|
113
|
+
continue
|
|
114
|
+
|
|
115
|
+
# Mark executable files with the header "x-goog-meta-executable: 1" which
|
|
116
|
+
# the download script will check for to preserve the executable bit.
|
|
117
|
+
if not sys.platform.startswith('win'):
|
|
118
|
+
if os.stat(filename).st_mode & stat.S_IEXEC:
|
|
119
|
+
code, _, err = gsutil.check_call_with_retries(
|
|
120
|
+
'setmeta', '-h', 'x-goog-meta-executable:1', file_url)
|
|
121
|
+
if not code:
|
|
122
|
+
ret_codes.put(
|
|
123
|
+
(code,
|
|
124
|
+
'Encountered error on setting metadata on %s\n%s' %
|
|
125
|
+
(file_url, err)))
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def get_targets(args, parser, use_null_terminator):
|
|
129
|
+
if not args:
|
|
130
|
+
parser.error('Missing target.')
|
|
131
|
+
|
|
132
|
+
if len(args) == 1 and args[0] == '-':
|
|
133
|
+
# Take stdin as a newline or null separated list of files.
|
|
134
|
+
if use_null_terminator:
|
|
135
|
+
return sys.stdin.read().split('\0')
|
|
136
|
+
else:
|
|
137
|
+
return sys.stdin.read().splitlines()
|
|
138
|
+
else:
|
|
139
|
+
return args
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def upload_to_google_storage(
|
|
143
|
+
input_filenames, base_url, gsutil, force,
|
|
144
|
+
use_md5, num_threads, skip_hashing, gzip):
|
|
145
|
+
# We only want one MD5 calculation happening at a time to avoid HD thrashing.
|
|
146
|
+
md5_lock = threading.Lock()
|
|
147
|
+
|
|
148
|
+
# Start up all the worker threads plus the printer thread.
|
|
149
|
+
all_threads = []
|
|
150
|
+
ret_codes = queue.Queue()
|
|
151
|
+
ret_codes.put((0, None))
|
|
152
|
+
upload_queue = queue.Queue()
|
|
153
|
+
upload_timer = time.time()
|
|
154
|
+
stdout_queue = queue.Queue()
|
|
155
|
+
printer_thread = PrinterThread(stdout_queue)
|
|
156
|
+
printer_thread.daemon = True
|
|
157
|
+
printer_thread.start()
|
|
158
|
+
for thread_num in range(num_threads):
|
|
159
|
+
t = threading.Thread(
|
|
160
|
+
target=_upload_worker,
|
|
161
|
+
args=[thread_num, upload_queue, base_url, gsutil, md5_lock,
|
|
162
|
+
force, use_md5, stdout_queue, ret_codes, gzip])
|
|
163
|
+
t.daemon = True
|
|
164
|
+
t.start()
|
|
165
|
+
all_threads.append(t)
|
|
166
|
+
|
|
167
|
+
# We want to hash everything in a single thread since its faster.
|
|
168
|
+
# The bottleneck is in disk IO, not CPU.
|
|
169
|
+
hashing_start = time.time()
|
|
170
|
+
for filename in input_filenames:
|
|
171
|
+
if not os.path.exists(filename):
|
|
172
|
+
stdout_queue.put('Main> Error: %s not found, skipping.' % filename)
|
|
173
|
+
continue
|
|
174
|
+
if os.path.exists('%s.sha1' % filename) and skip_hashing:
|
|
175
|
+
stdout_queue.put(
|
|
176
|
+
'Main> Found hash for %s, sha1 calculation skipped.' % filename)
|
|
177
|
+
with open(filename + '.sha1', 'rb') as f:
|
|
178
|
+
sha1_file = f.read(1024)
|
|
179
|
+
if not re.match('^([a-z0-9]{40})$', sha1_file.decode()):
|
|
180
|
+
print('Invalid sha1 hash file %s.sha1' % filename, file=sys.stderr)
|
|
181
|
+
return 1
|
|
182
|
+
upload_queue.put((filename, sha1_file.decode()))
|
|
183
|
+
continue
|
|
184
|
+
stdout_queue.put('Main> Calculating hash for %s...' % filename)
|
|
185
|
+
sha1_sum = get_sha1(filename)
|
|
186
|
+
with open(filename + '.sha1', 'wb') as f:
|
|
187
|
+
f.write(sha1_sum.encode())
|
|
188
|
+
stdout_queue.put('Main> Done calculating hash for %s.' % filename)
|
|
189
|
+
upload_queue.put((filename, sha1_sum))
|
|
190
|
+
hashing_duration = time.time() - hashing_start
|
|
191
|
+
|
|
192
|
+
# Wait for everything to finish.
|
|
193
|
+
for _ in all_threads:
|
|
194
|
+
upload_queue.put((None, None)) # To mark the end of the work queue.
|
|
195
|
+
for t in all_threads:
|
|
196
|
+
t.join()
|
|
197
|
+
stdout_queue.put(None)
|
|
198
|
+
printer_thread.join()
|
|
199
|
+
|
|
200
|
+
# Print timing information.
|
|
201
|
+
print('Hashing %s files took %1f seconds' % (
|
|
202
|
+
len(input_filenames), hashing_duration))
|
|
203
|
+
print('Uploading took %1f seconds' % (time.time() - upload_timer))
|
|
204
|
+
|
|
205
|
+
# See if we ran into any errors.
|
|
206
|
+
max_ret_code = 0
|
|
207
|
+
for ret_code, message in ret_codes.queue:
|
|
208
|
+
max_ret_code = max(ret_code, max_ret_code)
|
|
209
|
+
if message:
|
|
210
|
+
print(message, file=sys.stderr)
|
|
211
|
+
|
|
212
|
+
if not max_ret_code:
|
|
213
|
+
print('Success!')
|
|
214
|
+
|
|
215
|
+
return max_ret_code
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def create_archives(dirs):
|
|
219
|
+
archive_names = []
|
|
220
|
+
for name in dirs:
|
|
221
|
+
tarname = '%s.tar.gz' % name
|
|
222
|
+
with tarfile.open(tarname, 'w:gz') as tar:
|
|
223
|
+
tar.add(name)
|
|
224
|
+
archive_names.append(tarname)
|
|
225
|
+
return archive_names
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def validate_archive_dirs(dirs):
|
|
229
|
+
# We don't allow .. in paths in our archives.
|
|
230
|
+
if any(map(lambda x: '..' in x, dirs)):
|
|
231
|
+
return False
|
|
232
|
+
# We only allow dirs.
|
|
233
|
+
if any(map(lambda x: not os.path.isdir(x), dirs)):
|
|
234
|
+
return False
|
|
235
|
+
# We don't allow sym links in our archives.
|
|
236
|
+
if any(map(os.path.islink, dirs)):
|
|
237
|
+
return False
|
|
238
|
+
# We required that the subdirectories we are archiving are all just below
|
|
239
|
+
# cwd.
|
|
240
|
+
return not any(map(lambda x: x not in next(os.walk('.'))[1], dirs))
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
def main():
|
|
244
|
+
parser = optparse.OptionParser(USAGE_STRING)
|
|
245
|
+
parser.add_option('-b', '--bucket',
|
|
246
|
+
help='Google Storage bucket to upload to.')
|
|
247
|
+
parser.add_option('-e', '--boto', help='Specify a custom boto file.')
|
|
248
|
+
parser.add_option('-a', '--archive', action='store_true',
|
|
249
|
+
help='Archive directory as a tar.gz file')
|
|
250
|
+
parser.add_option('-f', '--force', action='store_true',
|
|
251
|
+
help='Force upload even if remote file exists.')
|
|
252
|
+
parser.add_option('-g', '--gsutil_path', default=GSUTIL_DEFAULT_PATH,
|
|
253
|
+
help='Path to the gsutil script.')
|
|
254
|
+
parser.add_option('-m', '--use_md5', action='store_true',
|
|
255
|
+
help='Generate MD5 files when scanning, and don\'t check '
|
|
256
|
+
'the MD5 checksum if a .md5 file is found.')
|
|
257
|
+
parser.add_option('-t', '--num_threads', default=1, type='int',
|
|
258
|
+
help='Number of uploader threads to run.')
|
|
259
|
+
parser.add_option('-s', '--skip_hashing', action='store_true',
|
|
260
|
+
help='Skip hashing if .sha1 file exists.')
|
|
261
|
+
parser.add_option('-0', '--use_null_terminator', action='store_true',
|
|
262
|
+
help='Use \\0 instead of \\n when parsing '
|
|
263
|
+
'the file list from stdin. This is useful if the input '
|
|
264
|
+
'is coming from "find ... -print0".')
|
|
265
|
+
parser.add_option('-z', '--gzip', metavar='ext',
|
|
266
|
+
help='Gzip files which end in ext. '
|
|
267
|
+
'ext is a comma-separated list')
|
|
268
|
+
(options, args) = parser.parse_args()
|
|
269
|
+
|
|
270
|
+
# Enumerate our inputs.
|
|
271
|
+
input_filenames = get_targets(args, parser, options.use_null_terminator)
|
|
272
|
+
|
|
273
|
+
if options.archive:
|
|
274
|
+
if not validate_archive_dirs(input_filenames):
|
|
275
|
+
parser.error('Only directories just below cwd are valid entries when '
|
|
276
|
+
'using the --archive argument. Entries can not contain .. '
|
|
277
|
+
' and entries can not be symlinks. Entries was %s' %
|
|
278
|
+
input_filenames)
|
|
279
|
+
return 1
|
|
280
|
+
input_filenames = create_archives(input_filenames)
|
|
281
|
+
|
|
282
|
+
# Make sure we can find a working instance of gsutil.
|
|
283
|
+
if os.path.exists(GSUTIL_DEFAULT_PATH):
|
|
284
|
+
gsutil = Gsutil(GSUTIL_DEFAULT_PATH, boto_path=options.boto)
|
|
285
|
+
else:
|
|
286
|
+
gsutil = None
|
|
287
|
+
for path in os.environ["PATH"].split(os.pathsep):
|
|
288
|
+
if os.path.exists(path) and 'gsutil' in os.listdir(path):
|
|
289
|
+
gsutil = Gsutil(os.path.join(path, 'gsutil'), boto_path=options.boto)
|
|
290
|
+
if not gsutil:
|
|
291
|
+
parser.error('gsutil not found in %s, bad depot_tools checkout?' %
|
|
292
|
+
GSUTIL_DEFAULT_PATH)
|
|
293
|
+
|
|
294
|
+
base_url = 'gs://%s' % options.bucket
|
|
295
|
+
|
|
296
|
+
return upload_to_google_storage(
|
|
297
|
+
input_filenames, base_url, gsutil, options.force, options.use_md5,
|
|
298
|
+
options.num_threads, options.skip_hashing, options.gzip)
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
if __name__ == '__main__':
|
|
302
|
+
try:
|
|
303
|
+
sys.exit(main())
|
|
304
|
+
except KeyboardInterrupt:
|
|
305
|
+
sys.stderr.write('interrupted\n')
|
|
306
|
+
sys.exit(1)
|