diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2014-04-01 12:24:49 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-04-01 12:53:26 +0100 |
commit | f688f6b566f455eb55d6e5491c80b88c493e158b (patch) | |
tree | 55df1bc911e0e52804d2ac6e4d561da4c601a287 | |
parent | d5a0a6b67632c99ea08e2782e8b7e345962470df (diff) | |
download | poky-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.py | 4 | ||||
-rw-r--r-- | bitbake/lib/bb/cooker.py | 3 | ||||
-rw-r--r-- | bitbake/lib/bb/server/xmlrpc.py | 2 |
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 | |||
267 | class CommandsAsync: | 271 | class 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 |