summaryrefslogtreecommitdiffstats
path: root/lib/bb/command.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-08-17 12:12:19 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-08-17 14:40:56 +0100
commitaaf3cc024315450c1674819edf2a4e5cdf293f35 (patch)
tree7f0702ecac7a767e32c9e6a324ced83806dcc634 /lib/bb/command.py
parentbc39b8da34c046b629c43fd0a8cac2efbf1c060f (diff)
downloadbitbake-aaf3cc024315450c1674819edf2a4e5cdf293f35.tar.gz
command: ensure sync commands that read configuration see updates
Add a means of ensuring that synchronous commands that read the results of the configuration trigger a reparse of the configuration if any underlying files have changed. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/command.py')
-rw-r--r--lib/bb/command.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/bb/command.py b/lib/bb/command.py
index a7cac97e2..398c1d6a6 100644
--- a/lib/bb/command.py
+++ b/lib/bb/command.py
@@ -68,6 +68,8 @@ class Command:
if not hasattr(command_method, 'readonly') or False == getattr(command_method, 'readonly'):
return None, "Not able to execute not readonly commands in readonly mode"
try:
+ if getattr(command_method, 'needconfig', False):
+ self.cooker.updateCacheSync()
result = command_method(self, commandline)
except CommandError as exc:
return None, exc.args[0]
@@ -204,6 +206,7 @@ class CommandsSync:
postfiles = params[1].split()
command.cooker.configuration.prefile = prefiles
command.cooker.configuration.postfile = postfiles
+ setPrePostConfFiles.needconfig = False
def getCpuCount(self, command, params):
"""
@@ -211,10 +214,12 @@ class CommandsSync:
"""
return bb.utils.cpu_count()
getCpuCount.readonly = True
+ getCpuCount.needconfig = False
def matchFile(self, command, params):
fMatch = params[0]
return command.cooker.matchFile(fMatch)
+ matchFile.needconfig = False
def generateNewImage(self, command, params):
image = params[0]
@@ -228,6 +233,7 @@ class CommandsSync:
def ensureDir(self, command, params):
directory = params[0]
bb.utils.mkdirhier(directory)
+ ensureDir.needconfig = False
def setVarFile(self, command, params):
"""
@@ -238,6 +244,7 @@ class CommandsSync:
default_file = params[2]
op = params[3]
command.cooker.modifyConfigurationVar(var, val, default_file, op)
+ setVarFile.needconfig = False
def removeVarFile(self, command, params):
"""
@@ -245,6 +252,7 @@ class CommandsSync:
"""
var = params[0]
command.cooker.removeConfigurationVar(var)
+ removeVarFile.needconfig = False
def createConfigFile(self, command, params):
"""
@@ -252,6 +260,7 @@ class CommandsSync:
"""
name = params[0]
command.cooker.createConfigFile(name)
+ createConfigFile.needconfig = False
def setEventMask(self, command, params):
handlerNum = params[0]
@@ -259,6 +268,7 @@ class CommandsSync:
debug_domains = params[2]
mask = params[3]
return bb.event.set_UIHmask(handlerNum, llevel, debug_domains, mask)
+ setEventMask.needconfig = False
def setFeatures(self, command, params):
"""
@@ -266,7 +276,7 @@ class CommandsSync:
"""
features = params[0]
command.cooker.setFeatures(features)
-
+ setFeatures.needconfig = False
# although we change the internal state of the cooker, this is transparent since
# we always take and leave the cooker in state.initial
setFeatures.readonly = True
@@ -275,6 +285,7 @@ class CommandsSync:
options = params[0]
environment = params[1]
command.cooker.updateConfigOpts(options, environment)
+ updateConfig.needconfig = False
class CommandsAsync:
"""