| Index: tools/cr/cr/base/platform.py
|
| diff --git a/tools/cr/cr/base/platform.py b/tools/cr/cr/base/platform.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7155d2bc7102526f27a7c143ce10b6e92df3daff
|
| --- /dev/null
|
| +++ b/tools/cr/cr/base/platform.py
|
| @@ -0,0 +1,70 @@
|
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""Module for the target platform support."""
|
| +
|
| +from importlib import import_module
|
| +import os
|
| +
|
| +import cr
|
| +
|
| +DEFAULT = cr.Config.From(
|
| + DEPOT_TOOLS=os.path.join('{GOOGLE_CODE}', 'depot_tools'),
|
| +)
|
| +
|
| +
|
| +class Platform(cr.Plugin, cr.Plugin.Type):
|
| + """Base class for implementing cr platforms.
|
| +
|
| + A platform is the target operating system being compiled for (linux android).
|
| + """
|
| +
|
| + _platform_module = import_module('platform', None)
|
| + SELECTOR = 'CR_PLATFORM'
|
| +
|
| + @classmethod
|
| + def AddArguments(cls, parser):
|
| + parser.add_argument(
|
| + '--platform', dest=cls.SELECTOR,
|
| + choices=cls.Choices(),
|
| + default=None,
|
| + help='Sets the target platform to use. Overrides ' + cls.SELECTOR
|
| + )
|
| +
|
| + @classmethod
|
| + def System(cls):
|
| + return cls._platform_module.system()
|
| +
|
| + def __init__(self):
|
| + super(Platform, self).__init__()
|
| +
|
| + def Activate(self, context):
|
| + super(Platform, self).Activate(context)
|
| + if _PathFixup not in context.fixup_hooks:
|
| + context.fixup_hooks.append(_PathFixup)
|
| +
|
| + @cr.Plugin.activemethod
|
| + def Prepare(self, context):
|
| + pass
|
| +
|
| + @property
|
| + def paths(self):
|
| + return []
|
| +
|
| +
|
| +def _PathFixup(context, key, value):
|
| + """A context fixup that does platform specific modifications to the PATH."""
|
| + if key == 'PATH':
|
| + paths = []
|
| + for entry in Platform.GetActivePlugin(context).paths:
|
| + entry = context.Substitute(entry)
|
| + if entry not in paths:
|
| + paths.append(entry)
|
| + for entry in value.split(os.path.pathsep):
|
| + if entry.endswith(os.path.sep + 'goma'):
|
| + pass
|
| + elif entry not in paths:
|
| + paths.append(entry)
|
| + value = os.path.pathsep.join(paths)
|
| + return value
|
|
|