summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2014-04-01 12:24:49 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-04-01 12:53:26 +0100
commitf688f6b566f455eb55d6e5491c80b88c493e158b (patch)
tree55df1bc911e0e52804d2ac6e4d561da4c601a287
parentd5a0a6b67632c99ea08e2782e8b7e345962470df (diff)
downloadpoky-f688f6b566f455eb55d6e5491c80b88c493e158b.tar.gz
bitbake: bitbake: cooker: mark setFeatures command as read-only
This patch makes sure that the setFeatures command is marked as read-only and that it can only run if the cooker is in the initial state. Additionally, remove logging from the XMLRPC module in favor of sending the exception to the client for easy processing. [YOCTO #6089] (Bitbake rev: f0a1a3e24757f7658d272035620465f92a3e4c3c) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/bb/command.py4
-rw-r--r--bitbake/lib/bb/cooker.py3
-rw-r--r--bitbake/lib/bb/server/xmlrpc.py2
3 files changed, 8 insertions, 1 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
index 3788207122..84fcdf9433 100644
--- a/bitbake/lib/bb/command.py
+++ b/bitbake/lib/bb/command.py
@@ -264,6 +264,10 @@ class CommandsSync:
264 features = params[0] 264 features = params[0]
265 command.cooker.setFeatures(features) 265 command.cooker.setFeatures(features)
266 266
267 # although we change the internal state of the cooker, this is transparent since
268 # we always take and leave the cooker in state.initial
269 setFeatures.readonly = True
270
267class CommandsAsync: 271class CommandsAsync:
268 """ 272 """
269 A class of asynchronous commands 273 A class of asynchronous commands
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index e6916a621b..f41f5946ae 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -159,6 +159,9 @@ class BBCooker:
159 self.state = state.forceshutdown 159 self.state = state.forceshutdown
160 160
161 def setFeatures(self, features): 161 def setFeatures(self, features):
162 # we only accept a new feature set if we're in state initial, so we can reset without problems
163 if self.state != state.initial:
164 raise Exception("Illegal state for feature set change")
162 original_featureset = list(self.featureset) 165 original_featureset = list(self.featureset)
163 for feature in features: 166 for feature in features:
164 self.featureset.setFeature(feature) 167 self.featureset.setFeature(feature)
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py
index bf867b584b..5dcaa6c7b0 100644
--- a/bitbake/lib/bb/server/xmlrpc.py
+++ b/bitbake/lib/bb/server/xmlrpc.py
@@ -292,7 +292,7 @@ class BitBakeXMLRPCServerConnection(BitBakeBaseServerConnection):
292 292
293 _, error = self.connection.runCommand(["setFeatures", self.featureset]) 293 _, error = self.connection.runCommand(["setFeatures", self.featureset])
294 if error: 294 if error:
295 logger.error("Unable to set the cooker to the correct featureset: %s" % error) 295 # no need to log it here, the error shall be sent to the client
296 raise BaseException(error) 296 raise BaseException(error)
297 297
298 return self 298 return self