Autoroller: Support for rolling individual DEPS entries.

Add functionality for automatic rolling of individual DEPS
entries. This will make it possible to move away from the
links created by setup_links.py to real DEPS entries.

There are two kinds of such deps we intend to use:
1. Third party dependencies used by both WebRTC and Chromium:
  those are rolled to the same revision as the Chromium DEPS file of the revision passed
  to the script
2. Chromium sub-directories needed for WebRTC (mainly for //build and BUILD.gn
   files of third_party deps): those are rolled to the HEAD revision
Notice that the latter kind could be rolled ahead of the chromium_revision,
but generally these should be close (and if it passes the bots, we don't really mind).

The new functionality can coexist with the old one, to
enable a smooth transition (not everything needs to change at once).

Some of the updating logic was inspired by
https://cs.chromium.org/chromium/build/scripts/slave/recipes/v8/auto_roll_v8_deps.py

Add extensive tests for the logic of figuring out deps changes,
including mocking git ls-remote call to keep the tests hermetic.

BUG=webrtc:5006
NOTRY=True

Review-Url: https://codereview.webrtc.org/2570603003
Cr-Commit-Position: refs/heads/master@{#15570}
6 files changed
tree: 87987beab4dbb8c0ecd7e883c5cb813f3edb702c
  1. build_overrides/
  2. chromium/
  3. data/
  4. infra/
  5. resources/
  6. third_party/
  7. tools/
  8. webrtc/
  9. .clang-format
  10. .git-blame-ignore-revs
  11. .gitignore
  12. .gn
  13. AUTHORS
  14. BUILD.gn
  15. check_root_dir.py
  16. codereview.settings
  17. DEPS
  18. LICENSE
  19. license_template.txt
  20. LICENSE_THIRD_PARTY
  21. OWNERS
  22. PATENTS
  23. PRESUBMIT.py
  24. pylintrc
  25. README.md
  26. setup_links.py
  27. sync_chromium.py
  28. WATCHLISTS
README.md

WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.

Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.

The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others. This page is maintained by the Google Chrome team.

Development

See http://www.webrtc.org/native-code/development for instructions on how to get started developing with the native code.

More info