Allow specificying that only target_os should be used in a gclient file
This allows specificying that a target OS list should override the base
list instead of adding to it. This is useful for iOS builds, where the
desired behavior is to pull only the iOS deps, not the union of the Mac
and iOS deps.
Review URL: https://chromiumcodereview.appspot.com/11363036
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@165671 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gclient.py b/gclient.py
index a91c61b..40a5e0d 100644
--- a/gclient.py
+++ b/gclient.py
@@ -55,6 +55,13 @@
Example:
target_os = [ "android" ]
+
+ If the "target_os_only" key is also present and true, then *only* the
+ operating systems listed in "target_os" will be used.
+
+ Example:
+ target_os = [ "ios" ]
+ target_os_only = True
"""
__version__ = "0.6.4"
@@ -886,7 +893,14 @@
# Append any target OS that is not already being enforced to the tuple.
target_os = config_dict.get('target_os', [])
- self._enforced_os = tuple(set(self._enforced_os).union(target_os))
+ if config_dict.get('target_os_only', False):
+ self._enforced_os = tuple(set(target_os))
+ else:
+ self._enforced_os = tuple(set(self._enforced_os).union(target_os))
+
+ if not target_os and config_dict.get('target_os_only', False):
+ raise gclient_utils.Error('Can\'t use target_os_only if target_os is '
+ 'not specified')
deps_to_add = []
for s in config_dict.get('solutions', []):