Support GCS dependencies in the DEPS Autoroller.
Before this CL, GCS dependencies were parsed but they were not rolled
because the script was generating the wrong command for `gclient setdep`.
This CL fixes the issue and also adds a custom CL description for GCS
dependencies.
Bug: None
Change-Id: I5515743993211abf7f3a0dcffdf8bb0db05cdf08
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/389541
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44500}
diff --git a/tools_webrtc/autoroller/roll_deps.py b/tools_webrtc/autoroller/roll_deps.py
index 0ffc7b6..e0af99a 100755
--- a/tools_webrtc/autoroller/roll_deps.py
+++ b/tools_webrtc/autoroller/roll_deps.py
@@ -88,6 +88,10 @@
NOTIFY_EMAIL = 'webrtc-trooper@grotations.appspotmail.com'
+GCS_OBJECTS_ERROR = (
+ 'The number of objects in %s is different between '
+ 'Chromium\'s DEPS and WebRTC\'s DEPS. They must be the same.')
+
sys.path.append(os.path.join(CHECKOUT_ROOT_DIR, 'build'))
import find_depot_tools
@@ -107,6 +111,8 @@
'ChangedCipdPackage', 'path package current_version new_version')
ChangedVersionEntry = collections.namedtuple(
'ChangedVersionEntry', 'path current_version new_version')
+ChangedGcsPackage = collections.namedtuple(
+ 'ChangedGcsPackage', 'path setdep_arg current_version new_version')
ChromiumRevisionUpdate = collections.namedtuple('ChromiumRevisionUpdate',
('current_chromium_rev '
@@ -323,6 +329,24 @@
return result
+def _FindChangedGcsPackage(path, old_pkg, new_pkg):
+ assert len(old_pkg.objects) == len(new_pkg.objects), (GCS_OBJECTS_ERROR %
+ path)
+ current_version_str = ','.join(x['object_name'] for x in old_pkg.objects)
+ new_version_str = ','.join(x['object_name'] for x in new_pkg.objects)
+ if current_version_str != new_version_str:
+ objects = [
+ ','.join([
+ o['object_name'], o['sha256sum'],
+ str(o['size_bytes']),
+ str(o['generation'])
+ ]) for o in new_pkg.objects
+ ]
+ setdep_arg = '%s@%s' % (path, '?'.join(objects))
+ yield ChangedGcsPackage(path, setdep_arg, current_version_str,
+ new_version_str)
+
+
def _FindChangedCipdPackages(path, old_pkgs, new_pkgs):
old_pkgs_names = {p['package'] for p in old_pkgs}
new_pkgs_names = {p['package'] for p in new_pkgs}
@@ -464,11 +488,8 @@
if isinstance(cr_deps_entry, GcsDepsEntry):
result.extend(
- _FindChangedVars(
- path, ','.join(x['object_name']
- for x in webrtc_deps_entry.objects),
- ','.join(x['object_name']
- for x in cr_deps_entry.objects)))
+ _FindChangedGcsPackage(path, webrtc_deps_entry,
+ cr_deps_entry))
continue
if isinstance(cr_deps_entry, VersionEntry):
@@ -554,6 +575,9 @@
if isinstance(c, ChangedCipdPackage):
commit_msg.append('* %s: %s..%s' %
(c.path, c.current_version, c.new_version))
+ elif isinstance(c, ChangedGcsPackage):
+ commit_msg.append('* %s: %s..%s' %
+ (c.path, c.current_version, c.new_version))
elif isinstance(c, ChangedVersionEntry):
commit_msg.append('* %s_version: %s..%s' %
(c.path, c.current_version, c.new_version))
@@ -638,6 +662,8 @@
if isinstance(dep, ChangedCipdPackage):
package = dep.package.format() # Eliminate double curly brackets
update = '%s:%s@%s' % (dep.path, package, dep.new_version)
+ elif isinstance(dep, ChangedGcsPackage):
+ update = dep.setdep_arg
else:
update = '%s@%s' % (dep.path, dep.new_rev)
_RunCommand(['gclient', 'setdep', '--revision', update],