libv8 4.5.95.5 → 5.0.71.48.0beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +45 -19
- data/CHANGELOG.md +14 -0
- data/README.md +30 -15
- data/Rakefile +7 -6
- data/ext/libv8/arch.rb +5 -4
- data/ext/libv8/builder.rb +25 -19
- data/ext/libv8/compiler.rb +6 -33
- data/ext/libv8/location.rb +7 -8
- data/lib/libv8/version.rb +1 -1
- data/libv8.gemspec +1 -1
- data/patches/build-standalone-static-library.patch +14 -0
- data/patches/disable-building-tests.patch +48 -10
- data/patches/fPIC-for-static.patch +3 -3
- data/release/x86-linux/Vagrantfile +8 -4
- data/release/x86_64-freebsd10/Vagrantfile +86 -0
- data/release/x86_64-linux/Vagrantfile +8 -4
- data/spec/compiler_spec.rb +5 -29
- data/spec/support/compiler_helpers.rb +2 -4
- data/vendor/depot_tools/.gitignore +15 -3
- data/vendor/depot_tools/OWNERS +2 -2
- data/vendor/depot_tools/PRESUBMIT.py +4 -2
- data/vendor/depot_tools/WATCHLISTS +6 -0
- data/vendor/depot_tools/apply_issue.py +70 -38
- data/vendor/depot_tools/bootstrap/win/README.md +66 -0
- data/vendor/depot_tools/bootstrap/win/git-bash.template.sh +12 -0
- data/vendor/depot_tools/bootstrap/win/git.template.bat +5 -0
- data/vendor/depot_tools/bootstrap/win/profile.d.python.sh +20 -0
- data/vendor/depot_tools/bootstrap/win/win_tools.bat +96 -45
- data/vendor/depot_tools/breakpad.py +6 -141
- data/vendor/depot_tools/buildbucket.py +45 -31
- data/vendor/depot_tools/cbuildbot +1 -0
- data/vendor/depot_tools/checkout.py +2 -1
- data/vendor/depot_tools/chrome_set_ver +1 -0
- data/vendor/depot_tools/cit +8 -0
- data/vendor/depot_tools/cit.bat +11 -0
- data/vendor/depot_tools/cit.py +120 -0
- data/vendor/depot_tools/codereview.settings +0 -2
- data/vendor/depot_tools/commit_queue +1 -5
- data/vendor/depot_tools/commit_queue.bat +1 -4
- data/vendor/depot_tools/commit_queue.py +78 -29
- data/vendor/depot_tools/cpplint.py +22 -14
- data/vendor/depot_tools/cros +1 -0
- data/vendor/depot_tools/cros_sdk +1 -0
- data/vendor/depot_tools/depot-tools-auth.py +3 -3
- data/vendor/depot_tools/download_from_google_storage.py +101 -21
- data/vendor/depot_tools/drover.py +2 -3
- data/vendor/depot_tools/fetch.py +31 -27
- data/vendor/depot_tools/{recipes → fetch_configs}/android.py +4 -4
- data/vendor/depot_tools/fetch_configs/breakpad.py +45 -0
- data/vendor/depot_tools/{recipes → fetch_configs}/chromium.py +3 -3
- data/vendor/depot_tools/{recipes/recipe_util.py → fetch_configs/config_util.py} +3 -3
- data/vendor/depot_tools/fetch_configs/crashpad.py +41 -0
- data/vendor/depot_tools/{recipes → fetch_configs}/dart.py +3 -3
- data/vendor/depot_tools/{recipes/pdfium.py → fetch_configs/dartino.py} +14 -13
- data/vendor/depot_tools/{recipes → fetch_configs}/dartium.py +3 -3
- data/vendor/depot_tools/{recipes → fetch_configs}/depot_tools.py +3 -3
- data/vendor/depot_tools/fetch_configs/gyp.py +42 -0
- data/vendor/depot_tools/{recipes → fetch_configs}/infra.py +3 -3
- data/vendor/depot_tools/{recipes → fetch_configs}/infra_internal.py +3 -3
- data/vendor/depot_tools/{recipes → fetch_configs}/ios.py +4 -4
- data/vendor/depot_tools/{recipes → fetch_configs}/mojo.py +3 -3
- data/vendor/depot_tools/{recipes → fetch_configs}/nacl.py +3 -3
- data/vendor/depot_tools/{recipes → fetch_configs}/naclports.py +3 -3
- data/vendor/depot_tools/fetch_configs/pdfium.py +40 -0
- data/vendor/depot_tools/{recipes → fetch_configs}/skia.py +3 -3
- data/vendor/depot_tools/{recipes → fetch_configs}/skia_buildbot.py +3 -3
- data/vendor/depot_tools/fetch_configs/syzygy.py +41 -0
- data/vendor/depot_tools/{recipes → fetch_configs}/v8.py +3 -3
- data/vendor/depot_tools/{recipes → fetch_configs}/webrtc.py +3 -3
- data/vendor/depot_tools/{recipes → fetch_configs}/webrtc_android.py +4 -4
- data/vendor/depot_tools/{recipes → fetch_configs}/webrtc_ios.py +4 -4
- data/vendor/depot_tools/fix_encoding.py +6 -6
- data/vendor/depot_tools/gcl.py +11 -21
- data/vendor/depot_tools/gclient +10 -0
- data/vendor/depot_tools/gclient-new-workdir.py +7 -38
- data/vendor/depot_tools/gclient.bat +2 -2
- data/vendor/depot_tools/gclient.py +85 -65
- data/vendor/depot_tools/gclient_scm.py +83 -10
- data/vendor/depot_tools/gclient_utils.py +5 -1
- data/vendor/depot_tools/gerrit_util.py +243 -26
- data/vendor/depot_tools/git-auto-svn +1 -1
- data/vendor/depot_tools/git-cache +1 -1
- data/vendor/depot_tools/git-cherry-pick-upload +1 -1
- data/vendor/depot_tools/git-cl +1 -1
- data/vendor/depot_tools/git-drover +6 -0
- data/vendor/depot_tools/git-find-releases +6 -0
- data/vendor/depot_tools/git-footers +1 -1
- data/vendor/depot_tools/git-freeze +1 -1
- data/vendor/depot_tools/git-gs +1 -1
- data/vendor/depot_tools/git-hyper-blame +6 -0
- data/vendor/depot_tools/git-map +1 -1
- data/vendor/depot_tools/git-map-branches +1 -1
- data/vendor/depot_tools/git-mark-merge-base +1 -1
- data/vendor/depot_tools/git-nav-downstream +1 -1
- data/vendor/depot_tools/git-new-branch +1 -1
- data/vendor/depot_tools/git-number +1 -1
- data/vendor/depot_tools/git-rebase-update +1 -1
- data/vendor/depot_tools/git-rename-branch +1 -1
- data/vendor/depot_tools/git-reparent-branch +1 -1
- data/vendor/depot_tools/git-retry +1 -1
- data/vendor/depot_tools/git-squash-branch +1 -1
- data/vendor/depot_tools/git-thaw +1 -1
- data/vendor/depot_tools/git-try +1 -1
- data/vendor/depot_tools/git-upstream-diff +1 -1
- data/vendor/depot_tools/git_auto_svn.py +24 -6
- data/vendor/depot_tools/git_cache.py +74 -27
- data/vendor/depot_tools/git_cl.py +2118 -747
- data/vendor/depot_tools/git_common.py +100 -6
- data/vendor/depot_tools/git_dates.py +62 -0
- data/vendor/depot_tools/git_drover.py +424 -0
- data/vendor/depot_tools/git_find_releases.py +65 -0
- data/vendor/depot_tools/git_footers.py +42 -0
- data/vendor/depot_tools/git_hyper_blame.py +391 -0
- data/vendor/depot_tools/git_map_branches.py +8 -6
- data/vendor/depot_tools/git_new_branch.py +6 -1
- data/vendor/depot_tools/git_rebase_update.py +56 -16
- data/vendor/depot_tools/git_reparent_branch.py +13 -0
- data/vendor/depot_tools/git_try.py +0 -2
- data/vendor/depot_tools/gsutil.py +51 -20
- data/vendor/depot_tools/infra/config/OWNERS +3 -1
- data/vendor/depot_tools/infra/config/cq.cfg +7 -3
- data/vendor/depot_tools/infra/config/recipes.cfg +9 -0
- data/vendor/depot_tools/luci_hacks/README.md +35 -0
- data/vendor/depot_tools/{bootstrap/virtualenv/tests → luci_hacks}/__init__.py +0 -0
- data/vendor/depot_tools/luci_hacks/luci_recipe_run.isolate +12 -0
- data/vendor/depot_tools/luci_hacks/luci_recipe_run.py +81 -0
- data/vendor/depot_tools/luci_hacks/trigger_luci_job.py +128 -0
- data/vendor/depot_tools/man/html/depot_tools.html +9 -1
- data/vendor/depot_tools/man/html/depot_tools_tutorial.html +4 -4
- data/vendor/depot_tools/man/html/git-drover.html +191 -35
- data/vendor/depot_tools/man/html/git-hyper-blame.html +878 -0
- data/vendor/depot_tools/man/html/git-rebase-update.html +9 -4
- data/vendor/depot_tools/man/man1/git-drover.1 +189 -36
- data/vendor/depot_tools/man/man1/git-hyper-blame.1 +128 -0
- data/vendor/depot_tools/man/man1/git-rebase-update.1 +8 -6
- data/vendor/depot_tools/man/man7/depot_tools.7 +9 -4
- data/vendor/depot_tools/man/src/_git-hyper-blame_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/common_demo_functions.sh +5 -0
- data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +1 -1
- data/vendor/depot_tools/man/src/git-drover.demo.1.sh +11 -16
- 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.txt +49 -3
- 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-rebase-update.txt +5 -1
- data/vendor/depot_tools/my_activity.py +6 -21
- data/vendor/depot_tools/ninja +2 -2
- 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/presubmit_canned_checks.py +83 -69
- data/vendor/depot_tools/presubmit_support.py +126 -42
- data/vendor/depot_tools/pylint.py +5 -1
- data/vendor/depot_tools/python_runner.sh +55 -0
- data/vendor/depot_tools/recipe_modules/bot_update/__init__.py +32 -0
- data/vendor/depot_tools/recipe_modules/bot_update/api.py +283 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic.json +56 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic_output_manifest.json +63 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic_with_branch_heads.json +57 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/clobber.json +44 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/forced.json +57 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/gerrit_no_reset.json +44 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/no_shallow.json +44 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/off.json +43 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/reset_root_solution_revision.json +43 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/svn_mode.json +59 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange.json +58 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange_oauth2.json +60 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob.json +58 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail.json +60 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail_patch.json +81 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail_patch_download.json +81 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_gerrit_angle.json +49 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_v8.json +61 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_v8_head_by_default.json +51 -0
- data/vendor/depot_tools/recipe_modules/bot_update/example.py +172 -0
- data/vendor/depot_tools/{bootstrap/virtualenv/virtualenv_support → recipe_modules/bot_update/resources}/__init__.py +0 -0
- data/vendor/depot_tools/recipe_modules/bot_update/resources/bot_update.py +1764 -0
- data/vendor/depot_tools/recipe_modules/bot_update/test_api.py +86 -0
- data/vendor/depot_tools/recipe_modules/depot_tools/__init__.py +3 -0
- data/vendor/depot_tools/recipe_modules/depot_tools/api.py +27 -0
- data/vendor/depot_tools/recipe_modules/gclient/__init__.py +10 -0
- data/vendor/depot_tools/recipe_modules/gclient/api.py +378 -0
- data/vendor/depot_tools/recipe_modules/gclient/config.py +671 -0
- data/vendor/depot_tools/recipe_modules/gclient/example.expected/basic.json +172 -0
- data/vendor/depot_tools/recipe_modules/gclient/example.expected/revision.json +174 -0
- data/vendor/depot_tools/recipe_modules/gclient/example.expected/tryserver.json +185 -0
- data/vendor/depot_tools/recipe_modules/gclient/example.py +100 -0
- data/vendor/depot_tools/recipe_modules/gclient/test_api.py +37 -0
- data/vendor/depot_tools/recipe_modules/git/__init__.py +9 -0
- data/vendor/depot_tools/recipe_modules/git/api.py +377 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/basic.json +177 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/basic_branch.json +177 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/basic_file_name.json +179 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/basic_hash.json +176 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/basic_ref.json +177 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/basic_submodule_update_force.json +178 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/can_fail_build.json +153 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/cannot_fail_build.json +181 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/cat-file_test.json +199 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_delta.json +250 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_failed.json +181 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_with_bad_output.json +182 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_with_bad_output_fails_build.json +102 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/curl_trace_file.json +181 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/platform_win.json +186 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/rebase_failed.json +179 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/remote_not_origin.json +179 -0
- data/vendor/depot_tools/recipe_modules/git/example.expected/set_got_revision.json +178 -0
- data/vendor/depot_tools/recipe_modules/git/example.py +147 -0
- data/vendor/depot_tools/recipe_modules/git/resources/git_setup.py +61 -0
- data/vendor/depot_tools/recipe_modules/git/test_api.py +18 -0
- data/vendor/depot_tools/recipe_modules/git_cl/__init__.py +4 -0
- data/vendor/depot_tools/recipe_modules/git_cl/api.py +25 -0
- data/vendor/depot_tools/recipe_modules/git_cl/config.py +22 -0
- data/vendor/depot_tools/recipe_modules/git_cl/example.expected/basic.json +66 -0
- data/vendor/depot_tools/recipe_modules/git_cl/example.py +41 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/__init__.py +4 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/api.py +12 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/basic.json +14 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_linux.json +14 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_mac.json +14 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_win.json +14 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_linux.json +14 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_mac.json +14 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_win.json +14 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/example.py +28 -0
- data/vendor/depot_tools/recipe_modules/infra_paths/path_config.py +45 -0
- data/vendor/depot_tools/recipe_modules/presubmit/__init__.py +4 -0
- data/vendor/depot_tools/recipe_modules/presubmit/api.py +20 -0
- data/vendor/depot_tools/recipe_modules/presubmit/example.expected/basic.json +18 -0
- data/vendor/depot_tools/recipe_modules/presubmit/example.py +15 -0
- data/vendor/depot_tools/recipe_modules/rietveld/__init__.py +5 -0
- data/vendor/depot_tools/recipe_modules/rietveld/api.py +94 -0
- data/vendor/depot_tools/recipe_modules/rietveld/example.expected/basic.json +30 -0
- data/vendor/depot_tools/recipe_modules/rietveld/example.py +24 -0
- data/vendor/depot_tools/recipe_modules/tryserver/__init__.py +15 -0
- data/vendor/depot_tools/recipe_modules/tryserver/api.py +280 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_git_patch.json +104 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch.json +58 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch_new.json +58 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_svn_patch.json +68 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_wrong_patch.json +43 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_wrong_patch_new.json +43 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.py +53 -0
- data/vendor/depot_tools/recipe_modules/tryserver/test_api.py +7 -0
- data/vendor/depot_tools/recipes.py +136 -0
- data/vendor/depot_tools/repo +1 -1
- data/vendor/depot_tools/rietveld.py +46 -15
- data/vendor/depot_tools/roll_dep.py +97 -36
- data/vendor/depot_tools/scm.py +3 -3
- data/vendor/depot_tools/setup_color.py +94 -0
- data/vendor/depot_tools/subprocess2.py +10 -1
- data/vendor/depot_tools/third_party/cq_client/OWNERS +0 -1
- data/vendor/depot_tools/third_party/cq_client/README.md +47 -9
- data/vendor/depot_tools/third_party/cq_client/cq.pb.go +617 -0
- data/vendor/depot_tools/third_party/cq_client/cq.proto +75 -17
- data/vendor/depot_tools/third_party/cq_client/cq_pb2.py +168 -41
- data/vendor/depot_tools/third_party/cq_client/testdata/cq_gerrit.cfg +55 -0
- data/vendor/depot_tools/third_party/cq_client/{test/cq_example.cfg → testdata/cq_rietveld.cfg} +14 -6
- data/vendor/depot_tools/third_party/fancy_urllib/README +5 -4
- data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +114 -52
- data/vendor/depot_tools/third_party/protobuf26/README.chromium +9 -6
- data/vendor/depot_tools/third_party/upload.py +17 -31
- data/vendor/depot_tools/trychange.py +0 -2
- data/vendor/depot_tools/update_depot_tools +29 -11
- data/vendor/depot_tools/update_depot_tools.bat +4 -9
- data/vendor/depot_tools/upload_to_google_storage.py +42 -5
- data/vendor/depot_tools/win_toolchain/OWNERS +1 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +227 -52
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +203 -88
- metadata +161 -81
- data/patches/arm/do-not-imply-vfp3-and-armv7.patch +0 -16
- data/patches/arm/do-not-use-vfp2.patch +0 -13
- data/patches/clang51/no-unused-variable.patch +0 -12
- data/vendor/depot_tools/bootstrap/.gitignore +0 -2
- data/vendor/depot_tools/bootstrap/bootstrap.py +0 -234
- data/vendor/depot_tools/bootstrap/deps.pyl +0 -15
- data/vendor/depot_tools/bootstrap/util.py +0 -87
- data/vendor/depot_tools/bootstrap/virtualenv/.gitignore +0 -10
- data/vendor/depot_tools/bootstrap/virtualenv/.travis.yml +0 -28
- data/vendor/depot_tools/bootstrap/virtualenv/AUTHORS.txt +0 -91
- data/vendor/depot_tools/bootstrap/virtualenv/CONTRIBUTING.rst +0 -21
- data/vendor/depot_tools/bootstrap/virtualenv/LICENSE.txt +0 -22
- data/vendor/depot_tools/bootstrap/virtualenv/MANIFEST.in +0 -11
- data/vendor/depot_tools/bootstrap/virtualenv/README.rst +0 -10
- data/vendor/depot_tools/bootstrap/virtualenv/bin/rebuild-script.py +0 -71
- data/vendor/depot_tools/bootstrap/virtualenv/docs/changes.rst +0 -747
- data/vendor/depot_tools/bootstrap/virtualenv/docs/conf.py +0 -149
- data/vendor/depot_tools/bootstrap/virtualenv/docs/development.rst +0 -61
- data/vendor/depot_tools/bootstrap/virtualenv/docs/index.rst +0 -137
- data/vendor/depot_tools/bootstrap/virtualenv/docs/installation.rst +0 -58
- data/vendor/depot_tools/bootstrap/virtualenv/docs/make.bat +0 -170
- data/vendor/depot_tools/bootstrap/virtualenv/docs/reference.rst +0 -256
- data/vendor/depot_tools/bootstrap/virtualenv/docs/userguide.rst +0 -249
- data/vendor/depot_tools/bootstrap/virtualenv/scripts/virtualenv +0 -3
- data/vendor/depot_tools/bootstrap/virtualenv/setup.py +0 -111
- data/vendor/depot_tools/bootstrap/virtualenv/tests/test_activate.sh +0 -94
- data/vendor/depot_tools/bootstrap/virtualenv/tests/test_activate_expected.output +0 -2
- data/vendor/depot_tools/bootstrap/virtualenv/tests/test_virtualenv.py +0 -139
- data/vendor/depot_tools/bootstrap/virtualenv/tests/tox.ini +0 -12
- data/vendor/depot_tools/bootstrap/virtualenv/tox.ini +0 -17
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv.py +0 -2367
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate.bat +0 -26
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate.csh +0 -42
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate.fish +0 -74
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate.ps1 +0 -150
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate.sh +0 -80
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate_this.py +0 -34
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/deactivate.bat +0 -20
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/distutils-init.py +0 -101
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/distutils.cfg +0 -6
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/site.py +0 -758
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_support/pip-6.0-py2.py3-none-any.whl +0 -0
- data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_support/setuptools-8.2.1-py2.py3-none-any.whl +0 -0
- data/vendor/depot_tools/bootstrap/win/README.google +0 -16
- data/vendor/depot_tools/cbuildbot +0 -96
- data/vendor/depot_tools/chrome_set_ver +0 -96
- data/vendor/depot_tools/cros +0 -96
- data/vendor/depot_tools/cros_sdk +0 -96
- data/vendor/depot_tools/git-cl-upload-hook +0 -52
- data/vendor/depot_tools/git-crup +0 -45
- data/vendor/depot_tools/python_git_runner.sh +0 -36
- data/vendor/depot_tools/recipes/blink.py +0 -59
- data/vendor/depot_tools/third_party/cq_client/test/validate_config_test.py +0 -52
- data/vendor/depot_tools/third_party/cq_client/validate_config.py +0 -108
- data/vendor/depot_tools/win_toolchain/toolchain2013.py +0 -494
@@ -11,8 +11,10 @@ import optparse
|
|
11
11
|
import os
|
12
12
|
import Queue
|
13
13
|
import re
|
14
|
+
import shutil
|
14
15
|
import stat
|
15
16
|
import sys
|
17
|
+
import tarfile
|
16
18
|
import threading
|
17
19
|
import time
|
18
20
|
|
@@ -49,12 +51,16 @@ def GetNormalizedPlatform():
|
|
49
51
|
return 'win32'
|
50
52
|
return sys.platform
|
51
53
|
|
52
|
-
|
53
54
|
# Common utilities
|
54
55
|
class Gsutil(object):
|
55
56
|
"""Call gsutil with some predefined settings. This is a convenience object,
|
56
57
|
and is also immutable."""
|
57
|
-
|
58
|
+
|
59
|
+
MAX_TRIES = 5
|
60
|
+
RETRY_BASE_DELAY = 5.0
|
61
|
+
RETRY_DELAY_MULTIPLE = 1.3
|
62
|
+
|
63
|
+
def __init__(self, path, boto_path=None, timeout=None, version='4.15'):
|
58
64
|
if not os.path.exists(path):
|
59
65
|
raise FileNotFoundError('GSUtil not found in %s' % path)
|
60
66
|
self.path = path
|
@@ -99,6 +105,18 @@ class Gsutil(object):
|
|
99
105
|
return (404, out, err)
|
100
106
|
return (code, out, err)
|
101
107
|
|
108
|
+
def check_call_with_retries(self, *args):
|
109
|
+
delay = self.RETRY_BASE_DELAY
|
110
|
+
for i in xrange(self.MAX_TRIES):
|
111
|
+
code, out, err = self.check_call(*args)
|
112
|
+
if not code or i == self.MAX_TRIES - 1:
|
113
|
+
break
|
114
|
+
|
115
|
+
time.sleep(delay)
|
116
|
+
delay *= self.RETRY_DELAY_MULTIPLE
|
117
|
+
|
118
|
+
return code, out, err
|
119
|
+
|
102
120
|
|
103
121
|
def check_platform(target):
|
104
122
|
"""Checks if any parent directory of target matches (win|mac|linux)."""
|
@@ -186,19 +204,39 @@ def enumerate_work_queue(input_filename, work_queue, directory,
|
|
186
204
|
return work_queue_size
|
187
205
|
|
188
206
|
|
207
|
+
def _validate_tar_file(tar, prefix):
|
208
|
+
def _validate(tarinfo):
|
209
|
+
"""Returns false if the tarinfo is something we explicitly forbid."""
|
210
|
+
if tarinfo.issym() or tarinfo.islnk():
|
211
|
+
return False
|
212
|
+
if '..' in tarinfo.name or not tarinfo.name.startswith(prefix):
|
213
|
+
return False
|
214
|
+
return True
|
215
|
+
return all(map(_validate, tar.getmembers()))
|
216
|
+
|
189
217
|
def _downloader_worker_thread(thread_num, q, force, base_url,
|
190
|
-
gsutil, out_q, ret_codes, verbose
|
218
|
+
gsutil, out_q, ret_codes, verbose, extract,
|
219
|
+
delete=True):
|
191
220
|
while True:
|
192
221
|
input_sha1_sum, output_filename = q.get()
|
193
222
|
if input_sha1_sum is None:
|
194
223
|
return
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
'%d> File %s exists and SHA1 matches. Skipping.' % (
|
224
|
+
extract_dir = None
|
225
|
+
if extract:
|
226
|
+
if not output_filename.endswith('.tar.gz'):
|
227
|
+
out_q.put('%d> Error: %s is not a tar.gz archive.' % (
|
200
228
|
thread_num, output_filename))
|
229
|
+
ret_codes.put((1, '%s is not a tar.gz archive.' % (output_filename)))
|
201
230
|
continue
|
231
|
+
extract_dir = output_filename[0:len(output_filename)-7]
|
232
|
+
if os.path.exists(output_filename) and not force:
|
233
|
+
if not extract or os.path.exists(extract_dir):
|
234
|
+
if get_sha1(output_filename) == input_sha1_sum:
|
235
|
+
if verbose:
|
236
|
+
out_q.put(
|
237
|
+
'%d> File %s exists and SHA1 matches. Skipping.' % (
|
238
|
+
thread_num, output_filename))
|
239
|
+
continue
|
202
240
|
# Check if file exists.
|
203
241
|
file_url = '%s/%s' % (base_url, input_sha1_sum)
|
204
242
|
(code, _, err) = gsutil.check_call('ls', file_url)
|
@@ -218,7 +256,8 @@ def _downloader_worker_thread(thread_num, q, force, base_url,
|
|
218
256
|
# Fetch the file.
|
219
257
|
out_q.put('%d> Downloading %s...' % (thread_num, output_filename))
|
220
258
|
try:
|
221
|
-
|
259
|
+
if delete:
|
260
|
+
os.remove(output_filename) # Delete the file if it exists already.
|
222
261
|
except OSError:
|
223
262
|
if os.path.exists(output_filename):
|
224
263
|
out_q.put('%d> Warning: deleting %s failed.' % (
|
@@ -227,7 +266,42 @@ def _downloader_worker_thread(thread_num, q, force, base_url,
|
|
227
266
|
if code != 0:
|
228
267
|
out_q.put('%d> %s' % (thread_num, err))
|
229
268
|
ret_codes.put((code, err))
|
269
|
+
continue
|
230
270
|
|
271
|
+
remote_sha1 = get_sha1(output_filename)
|
272
|
+
if remote_sha1 != input_sha1_sum:
|
273
|
+
msg = ('%d> ERROR remote sha1 (%s) does not match expected sha1 (%s).' %
|
274
|
+
(thread_num, remote_sha1, input_sha1_sum))
|
275
|
+
out_q.put(msg)
|
276
|
+
ret_codes.put((20, msg))
|
277
|
+
continue
|
278
|
+
|
279
|
+
if extract:
|
280
|
+
if not tarfile.is_tarfile(output_filename):
|
281
|
+
out_q.put('%d> Error: %s is not a tar.gz archive.' % (
|
282
|
+
thread_num, output_filename))
|
283
|
+
ret_codes.put((1, '%s is not a tar.gz archive.' % (output_filename)))
|
284
|
+
continue
|
285
|
+
with tarfile.open(output_filename, 'r:gz') as tar:
|
286
|
+
dirname = os.path.dirname(os.path.abspath(output_filename))
|
287
|
+
if not _validate_tar_file(tar, os.path.basename(extract_dir)):
|
288
|
+
out_q.put('%d> Error: %s contains files outside %s.' % (
|
289
|
+
thread_num, output_filename, extract_dir))
|
290
|
+
ret_codes.put((1, '%s contains invalid entries.' % (output_filename)))
|
291
|
+
continue
|
292
|
+
if os.path.exists(extract_dir):
|
293
|
+
try:
|
294
|
+
shutil.rmtree(extract_dir)
|
295
|
+
out_q.put('%d> Removed %s...' % (thread_num, extract_dir))
|
296
|
+
except OSError:
|
297
|
+
out_q.put('%d> Warning: Can\'t delete: %s' % (
|
298
|
+
thread_num, extract_dir))
|
299
|
+
ret_codes.put((1, 'Can\'t delete %s.' % (extract_dir)))
|
300
|
+
continue
|
301
|
+
out_q.put('%d> Extracting %d entries from %s to %s' %
|
302
|
+
(thread_num, len(tar.getmembers()),output_filename,
|
303
|
+
extract_dir))
|
304
|
+
tar.extractall(path=dirname)
|
231
305
|
# Set executable bit.
|
232
306
|
if sys.platform == 'cygwin':
|
233
307
|
# Under cygwin, mark all files as executable. The executable flag in
|
@@ -258,7 +332,7 @@ def printer_worker(output_queue):
|
|
258
332
|
|
259
333
|
def download_from_google_storage(
|
260
334
|
input_filename, base_url, gsutil, num_threads, directory, recursive,
|
261
|
-
force, output, ignore_errors, sha1_file, verbose, auto_platform):
|
335
|
+
force, output, ignore_errors, sha1_file, verbose, auto_platform, extract):
|
262
336
|
# Start up all the worker threads.
|
263
337
|
all_threads = []
|
264
338
|
download_start = time.time()
|
@@ -270,7 +344,7 @@ def download_from_google_storage(
|
|
270
344
|
t = threading.Thread(
|
271
345
|
target=_downloader_worker_thread,
|
272
346
|
args=[thread_num, work_queue, force, base_url,
|
273
|
-
gsutil, stdout_queue, ret_codes, verbose])
|
347
|
+
gsutil, stdout_queue, ret_codes, verbose, extract])
|
274
348
|
t.daemon = True
|
275
349
|
t.start()
|
276
350
|
all_threads.append(t)
|
@@ -324,7 +398,8 @@ def main(args):
|
|
324
398
|
parser.add_option('-e', '--boto',
|
325
399
|
help='Specify a custom boto file.')
|
326
400
|
parser.add_option('-c', '--no_resume', action='store_true',
|
327
|
-
help='Resume download if file is
|
401
|
+
help='DEPRECATED: Resume download if file is '
|
402
|
+
'partially downloaded.')
|
328
403
|
parser.add_option('-f', '--force', action='store_true',
|
329
404
|
help='Force download even if local file exists.')
|
330
405
|
parser.add_option('-i', '--ignore_errors', action='store_true',
|
@@ -358,8 +433,18 @@ def main(args):
|
|
358
433
|
'(linux|mac|win). If so, the script will only '
|
359
434
|
'process files that are in the paths that '
|
360
435
|
'that matches the current platform.')
|
361
|
-
parser.add_option('-
|
362
|
-
|
436
|
+
parser.add_option('-u', '--extract',
|
437
|
+
action='store_true',
|
438
|
+
help='Extract a downloaded tar.gz file. '
|
439
|
+
'Leaves the tar.gz file around for sha1 verification'
|
440
|
+
'If a directory with the same name as the tar.gz '
|
441
|
+
'file already exists, is deleted (to get a '
|
442
|
+
'clean state in case of update.)')
|
443
|
+
parser.add_option('-v', '--verbose', action='store_true', default=True,
|
444
|
+
help='DEPRECATED: Defaults to True. Use --no-verbose '
|
445
|
+
'to suppress.')
|
446
|
+
parser.add_option('-q', '--quiet', action='store_false', dest='verbose',
|
447
|
+
help='Suppresses diagnostic and progress information.')
|
363
448
|
|
364
449
|
(options, args) = parser.parse_args()
|
365
450
|
|
@@ -440,18 +525,13 @@ def main(args):
|
|
440
525
|
else:
|
441
526
|
parser.error('Unreachable state.')
|
442
527
|
|
443
|
-
# Check if output file already exists.
|
444
|
-
if not options.directory and not options.force and not options.no_resume:
|
445
|
-
if os.path.exists(options.output):
|
446
|
-
parser.error('Output file %s exists and --no_resume is specified.'
|
447
|
-
% options.output)
|
448
|
-
|
449
528
|
base_url = 'gs://%s' % options.bucket
|
450
529
|
|
451
530
|
return download_from_google_storage(
|
452
531
|
input_filename, base_url, gsutil, options.num_threads, options.directory,
|
453
532
|
options.recursive, options.force, options.output, options.ignore_errors,
|
454
|
-
options.sha1_file, options.verbose, options.auto_platform
|
533
|
+
options.sha1_file, options.verbose, options.auto_platform,
|
534
|
+
options.extract)
|
455
535
|
|
456
536
|
|
457
537
|
if __name__ == '__main__':
|
@@ -10,7 +10,6 @@ import re
|
|
10
10
|
import sys
|
11
11
|
import urlparse
|
12
12
|
|
13
|
-
import breakpad # pylint: disable=W0611
|
14
13
|
|
15
14
|
import gclient_utils
|
16
15
|
import subprocess2
|
@@ -377,7 +376,7 @@ def getSVNAuthInfo(folder=None):
|
|
377
376
|
try:
|
378
377
|
for auth_file in os.listdir(svn_simple_folder):
|
379
378
|
# Read the SVN auth file, convert it into a dictionary, and store it.
|
380
|
-
results[auth_file] = dict(re.findall(r'K [0-9]+\n(.*)\nV [0-9]+\n(.*)\n',
|
379
|
+
results[auth_file] = dict(re.findall(r'K [0-9]+\n(.*)\nV [0-9]+\n(.*)\n',
|
381
380
|
open(os.path.join(svn_simple_folder, auth_file)).read()))
|
382
381
|
except Exception as _:
|
383
382
|
pass
|
@@ -391,7 +390,7 @@ def getCurrentSVNUsers(url):
|
|
391
390
|
auth_infos = getSVNAuthInfo()
|
392
391
|
results = []
|
393
392
|
for _, auth_info in auth_infos.iteritems():
|
394
|
-
if ('svn:realmstring' in auth_info
|
393
|
+
if ('svn:realmstring' in auth_info
|
395
394
|
and netloc in auth_info['svn:realmstring']):
|
396
395
|
username = auth_info['username']
|
397
396
|
results.append(username)
|
data/vendor/depot_tools/fetch.py
CHANGED
@@ -7,15 +7,15 @@
|
|
7
7
|
Tool to perform checkouts in one easy command line!
|
8
8
|
|
9
9
|
Usage:
|
10
|
-
fetch <
|
10
|
+
fetch <config> [--property=value [--property2=value2 ...]]
|
11
11
|
|
12
12
|
This script is a wrapper around various version control and repository
|
13
|
-
checkout commands. It requires a |
|
14
|
-
|
13
|
+
checkout commands. It requires a |config| name, fetches data from that
|
14
|
+
config in depot_tools/fetch_configs, and then performs all necessary inits,
|
15
15
|
checkouts, pulls, fetches, etc.
|
16
16
|
|
17
17
|
Optional arguments may be passed on the command line in key-value pairs.
|
18
|
-
These parameters will be passed through to the
|
18
|
+
These parameters will be passed through to the config's main method.
|
19
19
|
"""
|
20
20
|
|
21
21
|
import json
|
@@ -39,10 +39,10 @@ class Checkout(object):
|
|
39
39
|
|
40
40
|
Attributes:
|
41
41
|
|base|: the absolute path of the directory in which this script is run.
|
42
|
-
|spec|: the spec for this checkout as returned by the
|
42
|
+
|spec|: the spec for this checkout as returned by the config. Different
|
43
43
|
subclasses will expect different keys in this dictionary.
|
44
44
|
|root|: the directory into which the checkout will be performed, as returned
|
45
|
-
by the
|
45
|
+
by the config. This is a relative path from |base|.
|
46
46
|
"""
|
47
47
|
def __init__(self, options, spec, root):
|
48
48
|
self.base = os.getcwd()
|
@@ -222,7 +222,7 @@ def usage(msg=None):
|
|
222
222
|
print 'Error:', msg
|
223
223
|
|
224
224
|
print textwrap.dedent("""\
|
225
|
-
usage: %s [options] <
|
225
|
+
usage: %s [options] <config> [--property=value [--property2=value2 ...]]
|
226
226
|
|
227
227
|
This script can be used to download the Chromium sources. See
|
228
228
|
http://www.chromium.org/developers/how-tos/get-the-code
|
@@ -234,18 +234,21 @@ def usage(msg=None):
|
|
234
234
|
-n, --dry-run Don't run commands, only print them.
|
235
235
|
--no-history Perform shallow clones, don't fetch the full git history.
|
236
236
|
|
237
|
-
Valid fetch
|
238
|
-
|
239
|
-
|
240
|
-
|
237
|
+
Valid fetch configs:""") % os.path.basename(sys.argv[0])
|
238
|
+
|
239
|
+
configs_dir = os.path.join(SCRIPT_PATH, 'fetch_configs')
|
240
|
+
configs = [f[:-3] for f in os.listdir(configs_dir) if f.endswith('.py')]
|
241
|
+
configs.sort()
|
242
|
+
for fname in configs:
|
243
|
+
print ' ' + fname
|
241
244
|
|
242
245
|
sys.exit(bool(msg))
|
243
246
|
|
244
247
|
|
245
248
|
def handle_args(argv):
|
246
|
-
"""Gets the
|
249
|
+
"""Gets the config name from the command line arguments."""
|
247
250
|
if len(argv) <= 1:
|
248
|
-
usage('Must specify a
|
251
|
+
usage('Must specify a config.')
|
249
252
|
if argv[1] in ('-h', '--help', 'help'):
|
250
253
|
usage()
|
251
254
|
|
@@ -273,32 +276,33 @@ def handle_args(argv):
|
|
273
276
|
if bad_parms:
|
274
277
|
usage('Got bad arguments %s' % bad_parms)
|
275
278
|
|
276
|
-
|
279
|
+
config = argv[1]
|
277
280
|
props = argv[2:]
|
278
281
|
return (
|
279
282
|
optparse.Values(
|
280
283
|
{'dry_run':dry_run, 'nohooks':nohooks, 'no_history': no_history }),
|
281
|
-
|
284
|
+
config,
|
282
285
|
props)
|
283
286
|
|
284
287
|
|
285
|
-
def
|
286
|
-
"""Invoke a
|
288
|
+
def run_config_fetch(config, props, aliased=False):
|
289
|
+
"""Invoke a config's fetch method with the passed-through args
|
287
290
|
and return its json output as a python object."""
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
+
config_path = os.path.abspath(
|
292
|
+
os.path.join(SCRIPT_PATH, 'fetch_configs', config))
|
293
|
+
if not os.path.exists(config_path + '.py'):
|
294
|
+
print "Could not find a config for %s" % config
|
291
295
|
sys.exit(1)
|
292
296
|
|
293
|
-
cmd = [sys.executable,
|
297
|
+
cmd = [sys.executable, config_path + '.py', 'fetch'] + props
|
294
298
|
result = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
|
295
299
|
|
296
300
|
spec = json.loads(result)
|
297
301
|
if 'alias' in spec:
|
298
302
|
assert not aliased
|
299
|
-
return
|
300
|
-
spec['alias']['
|
301
|
-
cmd = [sys.executable,
|
303
|
+
return run_config_fetch(
|
304
|
+
spec['alias']['config'], spec['alias']['props'] + props, aliased=True)
|
305
|
+
cmd = [sys.executable, config_path + '.py', 'root']
|
302
306
|
result = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
|
303
307
|
root = json.loads(result)
|
304
308
|
return spec, root
|
@@ -309,7 +313,7 @@ def run(options, spec, root):
|
|
309
313
|
|
310
314
|
Args:
|
311
315
|
options: Options instance.
|
312
|
-
spec: Checkout configuration returned by the the
|
316
|
+
spec: Checkout configuration returned by the the config's fetch_spec
|
313
317
|
method (checkout type, repository url, etc.).
|
314
318
|
root: The directory into which the repo expects to be checkout out.
|
315
319
|
"""
|
@@ -332,8 +336,8 @@ def run(options, spec, root):
|
|
332
336
|
|
333
337
|
|
334
338
|
def main():
|
335
|
-
options,
|
336
|
-
spec, root =
|
339
|
+
options, config, props = handle_args(sys.argv)
|
340
|
+
spec, root = run_config_fetch(config, props)
|
337
341
|
return run(options, spec, root)
|
338
342
|
|
339
343
|
|
@@ -4,19 +4,19 @@
|
|
4
4
|
|
5
5
|
import sys
|
6
6
|
|
7
|
-
import
|
7
|
+
import config_util # pylint: disable=F0401
|
8
8
|
|
9
9
|
|
10
10
|
# This class doesn't need an __init__ method, so we disable the warning
|
11
11
|
# pylint: disable=W0232
|
12
|
-
class Android(
|
13
|
-
"""Basic
|
12
|
+
class Android(config_util.Config):
|
13
|
+
"""Basic Config alias for Android -> Chromium."""
|
14
14
|
|
15
15
|
@staticmethod
|
16
16
|
def fetch_spec(props):
|
17
17
|
return {
|
18
18
|
'alias': {
|
19
|
-
'
|
19
|
+
'config': 'chromium',
|
20
20
|
'props': ['--target_os=android'],
|
21
21
|
},
|
22
22
|
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Copyright (c) 2015 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 sys
|
6
|
+
|
7
|
+
import config_util # pylint: disable=F0401
|
8
|
+
|
9
|
+
|
10
|
+
# This class doesn't need an __init__ method, so we disable the warning
|
11
|
+
# pylint: disable=W0232
|
12
|
+
class Breakpad(config_util.Config):
|
13
|
+
@staticmethod
|
14
|
+
def fetch_spec(props):
|
15
|
+
url = 'https://chromium.googlesource.com/breakpad/breakpad.git'
|
16
|
+
solution = {
|
17
|
+
'name': 'src',
|
18
|
+
'url': url,
|
19
|
+
'managed': False,
|
20
|
+
'custom_deps': {},
|
21
|
+
'safesync_url': '',
|
22
|
+
}
|
23
|
+
spec = {
|
24
|
+
'solutions': [solution],
|
25
|
+
}
|
26
|
+
if props.get('target_os'):
|
27
|
+
spec['target_os'] = props['target_os'].split(',')
|
28
|
+
if props.get('target_os_only'):
|
29
|
+
spec['target_os_only'] = props['target_os_only']
|
30
|
+
return {
|
31
|
+
'type': 'gclient_git',
|
32
|
+
'gclient_git_spec': spec,
|
33
|
+
}
|
34
|
+
|
35
|
+
@staticmethod
|
36
|
+
def expected_root(_props):
|
37
|
+
return 'src'
|
38
|
+
|
39
|
+
|
40
|
+
def main(argv=None):
|
41
|
+
return Breakpad().handle_args(argv)
|
42
|
+
|
43
|
+
|
44
|
+
if __name__ == '__main__':
|
45
|
+
sys.exit(main(sys.argv))
|
@@ -4,13 +4,13 @@
|
|
4
4
|
|
5
5
|
import sys
|
6
6
|
|
7
|
-
import
|
7
|
+
import config_util # pylint: disable=F0401
|
8
8
|
|
9
9
|
|
10
10
|
# This class doesn't need an __init__ method, so we disable the warning
|
11
11
|
# pylint: disable=W0232
|
12
|
-
class Chromium(
|
13
|
-
"""Basic
|
12
|
+
class Chromium(config_util.Config):
|
13
|
+
"""Basic Config class for Chromium."""
|
14
14
|
|
15
15
|
@staticmethod
|
16
16
|
def fetch_spec(props):
|