From d21720db313369f25b99b4d2f3f87c8be46513d9 Mon Sep 17 00:00:00 2001 From: Conley Owens Date: Mon, 16 Apr 2012 11:02:21 -0700 Subject: [PATCH] Add a --platform flag Projects may optionally specify their platform (eg, groups="platform-linux" in the manifest). By default, repo will automatically detect the platform. However, users may specify --platform=[auto|all|linux|darwin]. Change-Id: Ie678851fb2fec5b0938aede01f16c53138a16537 --- command.py | 3 ++- repo | 5 +++++ subcmds/init.py | 23 ++++++++++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/command.py b/command.py index 2ee0a43a..936ab408 100644 --- a/command.py +++ b/command.py @@ -15,6 +15,7 @@ import os import optparse +import platform import re import sys @@ -69,7 +70,7 @@ class Command(object): groups = mp.config.GetString('manifest.groups') if groups is None: - groups = 'default' + groups = 'default,platform-' + platform.system().lower() groups = [x for x in re.split('[,\s]+', groups) if x] if not args: diff --git a/repo b/repo index 0aabc0d8..860a15d5 100755 --- a/repo +++ b/repo @@ -129,6 +129,11 @@ group.add_option('-g', '--groups', dest='groups', default='default', help='restrict manifest projects to ones with a specified group', metavar='GROUP') +group.add_option('-p', '--platform', + dest='platform', default="auto", + help='restrict manifest projects to ones with a specified' + 'platform group [auto|all|none|linux|darwin|...]', + metavar='PLATFORM') # Tool diff --git a/subcmds/init.py b/subcmds/init.py index d1c497c1..2e3215b2 100644 --- a/subcmds/init.py +++ b/subcmds/init.py @@ -14,6 +14,7 @@ # limitations under the License. import os +import platform import re import shutil import sys @@ -91,6 +92,11 @@ to update the working directory files. dest='groups', default='default', help='restrict manifest projects to ones with a specified group', metavar='GROUP') + g.add_option('-p', '--platform', + dest='platform', default='auto', + help='restrict manifest projects to ones with a specified' + 'platform group [auto|all|none|linux|darwin|...]', + metavar='PLATFORM') # Tool g = p.add_option_group('repo Version options') @@ -141,9 +147,24 @@ to update the working directory files. r.Save() groups = re.split('[,\s]+', opt.groups) + all_platforms = ['linux', 'darwin'] + platformize = lambda x: 'platform-' + x + if opt.platform == 'auto': + if (not opt.mirror and + not m.config.GetString('repo.mirror') == 'true'): + groups.append(platformize(platform.system().lower())) + elif opt.platform == 'all': + groups.extend(map(platformize, all_platfroms)) + elif opt.platform in all_platforms: + groups.extend(platformize(opt.platform)) + elif opt.platform != 'none': + print >>sys.stderr, 'fatal: invalid platform flag' + sys.exit(1) + groups = [x for x in groups if x] groupstr = ','.join(groups) - if groupstr == 'default': + if opt.platform == 'auto' and + groupstr == 'default,platform-' + platform.system.lower(): groupstr = None m.config.SetString('manifest.groups', groupstr)