Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Unified Diff: tools/cr/cr/base/client.py

Issue 1157293004: Move cr build configuration outside output folders (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address skyostil's comments Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/cr/cr/base/client.py
diff --git a/tools/cr/cr/base/client.py b/tools/cr/cr/base/client.py
index ed18733626b91b60b8f95a17e94b976218d4f48e..cb2122220b3f500d6d01cfc01a0e90e2c7893c44 100644
--- a/tools/cr/cr/base/client.py
+++ b/tools/cr/cr/base/client.py
@@ -20,10 +20,14 @@ import cr.auto.client
# The config version currently supported.
VERSION = 0.5
-# The default directory name to store config inside
-CLIENT_CONFIG_PATH = '.cr'
+# The default directory name to store configs inside.
+CONFIG_PATH = '.cr'
# The filename of the config file inside a config directory.
-CLIENT_CONFIG_FILE = 'config.py'
+CONFIG_FILE = 'config.py'
+# The directory inside the config directory which contains the client config.
+CLIENT_CONFIG_DIR = 'client'
+# The directory inside the config directory which contains build configs.
+BUILD_CONFIG_DIR = 'builds'
# The format string for the header of a config file.
CONFIG_FILE_PREFIX = """
# This is an autogenerated file
@@ -74,11 +78,60 @@ def DetectClient():
def _GetConfigDir(use_build_dir):
+ base_path = os.path.join(cr.context.Get('CR_CLIENT_PATH'), CONFIG_PATH)
+ if use_build_dir:
+ path_suffix = os.path.join(BUILD_CONFIG_DIR, cr.context.Get('CR_OUT_FULL'))
+ else:
+ path_suffix = CLIENT_CONFIG_DIR
+ return os.path.realpath(os.path.join(base_path, path_suffix))
+
+
+def _GetDeprecatedConfigDir(use_build_dir):
if use_build_dir:
path = cr.context.Get('CR_BUILD_DIR')
else:
path = cr.context.Get('CR_CLIENT_PATH')
- return os.path.realpath(os.path.join(path, CLIENT_CONFIG_PATH))
+ return os.path.realpath(os.path.join(path, CONFIG_PATH))
+
+
+def _GetConfigFile(config_dir):
+ return os.path.join(config_dir, CONFIG_FILE)
+
+
+def _MigrateAndGetConfigDir(use_build_dir):
+ new_config_dir = _GetConfigDir(use_build_dir)
+ new_config_file = _GetConfigFile(new_config_dir)
+ new_config_exists = os.path.exists(new_config_file)
+
+ old_config_dir = _GetDeprecatedConfigDir(use_build_dir)
+ old_config_file = _GetConfigFile(old_config_dir)
+ old_config_exists = os.path.exists(old_config_file)
+
+ if old_config_exists:
+ if new_config_exists:
+ print 'Warning: Old config file %s superseded by new config file %s' % (
+ old_config_file, new_config_file)
+ else:
+ print 'Migrating config file from %s to %s...' % (
+ old_config_file, new_config_file)
+ if not cr.context.dry_run:
+ # Make the new config directory (if necessary).
+ try:
+ os.makedirs(new_config_dir)
+ except OSError:
+ if not os.path.isdir(new_config_dir):
+ raise
+ # Move the config file.
+ os.rename(old_config_file, new_config_file)
+ # Delete the old config directory (only applies to the build config).
+ if use_build_dir:
+ try:
+ os.removedirs(old_config_dir)
+ except OSError:
+ print 'Warning: Old config directory %s could not be removed' % (
+ old_config_dir)
+
+ return new_config_dir
def _WriteConfig(writer, data):
@@ -158,11 +211,11 @@ def LoadConfig():
"""
# Load the root config, will help set default build dir
- client_config_dir = _GetConfigDir(use_build_dir=False)
+ client_config_dir = _MigrateAndGetConfigDir(use_build_dir=False)
cr.auto.client.__path__.append(client_config_dir)
cr.loader.Scan()
# Now load build dir config
- build_config_dir = _GetConfigDir(use_build_dir=True)
+ build_config_dir = _MigrateAndGetConfigDir(use_build_dir=True)
cr.auto.build.__path__.append(build_config_dir)
cr.loader.Scan()
return hasattr(cr.auto.build, 'config')
@@ -179,7 +232,7 @@ def WriteConfig(use_build_dir, data):
data: The key value pairs to write.
"""
config_dir = _GetConfigDir(use_build_dir)
- filename = os.path.join(config_dir, CLIENT_CONFIG_FILE)
+ filename = _GetConfigFile(config_dir)
if cr.context.dry_run:
print 'makedirs', config_dir
print 'Write config to', filename
@@ -196,6 +249,8 @@ def WriteConfig(use_build_dir, data):
def PrintInfo():
print 'Selected output directory is', cr.context.Find('CR_BUILD_DIR')
+ print 'Build config file is', _GetConfigFile(_GetConfigDir(
+ use_build_dir=True))
try:
for name in cr.auto.build.config.OVERRIDES.exported.keys():
print ' ', name, '=', cr.context.Get(name)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698