Always specify current OS when syncing Chromium.
Recently, we've hit a rare case of a dependency being
present only below 'unix' and not in the 'android' section
of the DEPS file in Chromium (src/third_party/junit/src).
This exposed a bug in our sync_chromium.py script, which is that
when the --deps flag is passed to gclient sync, _only_ that platform
is processed. That means our Android builders synced with --deps=android
and thus only getting the Android deps, not the 'unix' ones (Linux).
That behavior is different from a regular gclient sync, where both
the current platform's DEPS and the one specified by appending a target_os
variable into .gclient is used.
Ensuring that we pass both the current platform and the optionally specified
DEPS platform into our sync_chromium.py sync, gives us the same behavior
as a regular sync for the special Chromium sync we use.
TESTED=
First:
rm chromium/.last_sync_chromium
Then I ran without this patch and with target_os = ["android"] in .gclient. Verified
that --deps=android was passed.
With this patch, I repeated the above and verified --deps=unix,android was passed.
R=phoglund@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/52379004
Cr-Commit-Position: refs/heads/master@{#9103}
diff --git a/sync_chromium.py b/sync_chromium.py
index 35d693e..08b1042 100755
--- a/sync_chromium.py
+++ b/sync_chromium.py
@@ -35,6 +35,20 @@
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
CHROMIUM_NO_HISTORY = 'CHROMIUM_NO_HISTORY'
+# Duplicated from depot_tools/gclient.py since we cannot depend on that:
+DEPS_OS_CHOICES = {
+ "win32": "win",
+ "win": "win",
+ "cygwin": "win",
+ "darwin": "mac",
+ "mac": "mac",
+ "unix": "unix",
+ "linux": "unix",
+ "linux2": "unix",
+ "linux3": "unix",
+ "android": "android",
+}
+
def _parse_gclient_dict():
gclient_dict = {}
try:
@@ -51,7 +65,12 @@
def get_target_os_list():
- return ','.join(_parse_gclient_dict().get('target_os', []))
+ # Always add the currently running OS since the --deps option will override
+ # that if specified:
+ target_os_list = [DEPS_OS_CHOICES.get(sys.platform, 'unix')]
+ # Add any target_os entries from .gclient.
+ target_os_list += _parse_gclient_dict().get('target_os', [])
+ return ','.join(target_os_list)
def main():