diff options
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r-- | bitbake/lib/bb/command.py | 11 | ||||
-rw-r--r-- | bitbake/lib/bb/data_smart.py | 2 | ||||
-rw-r--r-- | bitbake/lib/bb/tests/data.py | 10 | ||||
-rw-r--r-- | bitbake/lib/bb/tinfoil.py | 6 |
4 files changed, 18 insertions, 11 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py index b296b8ce84..352838b0aa 100644 --- a/bitbake/lib/bb/command.py +++ b/bitbake/lib/bb/command.py | |||
@@ -483,14 +483,13 @@ class CommandsSync: | |||
483 | dataStoreConnectorGetVarHistory.readonly = True | 483 | dataStoreConnectorGetVarHistory.readonly = True |
484 | 484 | ||
485 | def dataStoreConnectorExpandPythonRef(self, command, params): | 485 | def dataStoreConnectorExpandPythonRef(self, command, params): |
486 | dsindex = params[0] | 486 | config_data_dict = params[0] |
487 | varname = params[1] | 487 | varname = params[1] |
488 | expr = params[2] | 488 | expr = params[2] |
489 | if dsindex: | 489 | |
490 | datastore = self.dataStores[dsindex] | 490 | config_data = command.remotedatastores.receive_datastore(config_data_dict) |
491 | else: | 491 | |
492 | datastore = command.cooker.data | 492 | varparse = bb.data_smart.VariableParse(varname, config_data) |
493 | varparse = bb.data_smart.VariableParse(varname, datastore) | ||
494 | return varparse.python_sub(expr) | 493 | return varparse.python_sub(expr) |
495 | 494 | ||
496 | def dataStoreConnectorRelease(self, command, params): | 495 | def dataStoreConnectorRelease(self, command, params): |
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index 5d0ed12d6e..4d0a771283 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py | |||
@@ -123,7 +123,7 @@ class VariableParse: | |||
123 | 123 | ||
124 | if "_remote_data" in self.d: | 124 | if "_remote_data" in self.d: |
125 | connector = self.d["_remote_data"] | 125 | connector = self.d["_remote_data"] |
126 | return connector.expandPythonRef(self.varname, code) | 126 | return connector.expandPythonRef(self.varname, code, self.d) |
127 | 127 | ||
128 | codeobj = compile(code.strip(), self.varname or "<expansion>", "eval") | 128 | codeobj = compile(code.strip(), self.varname or "<expansion>", "eval") |
129 | 129 | ||
diff --git a/bitbake/lib/bb/tests/data.py b/bitbake/lib/bb/tests/data.py index 2bd481b5d7..a17245f90a 100644 --- a/bitbake/lib/bb/tests/data.py +++ b/bitbake/lib/bb/tests/data.py | |||
@@ -458,8 +458,11 @@ class Remote(unittest.TestCase): | |||
458 | return self.d.localkeys() | 458 | return self.d.localkeys() |
459 | def getVarHistory(self, name): | 459 | def getVarHistory(self, name): |
460 | return self.d.varhistory.variable(name) | 460 | return self.d.varhistory.variable(name) |
461 | def expandPythonRef(self, varname, expr): | 461 | def expandPythonRef(self, varname, expr, d): |
462 | varparse = bb.data_smart.VariableParse(varname, self.d) | 462 | localdata = self.d.createCopy() |
463 | for key in d.localkeys(): | ||
464 | localdata.setVar(d.getVar(key)) | ||
465 | varparse = bb.data_smart.VariableParse(varname, localdata) | ||
463 | return varparse.python_sub(expr) | 466 | return varparse.python_sub(expr) |
464 | def setVar(self, name, value): | 467 | def setVar(self, name, value): |
465 | self.d.setVar(name, value) | 468 | self.d.setVar(name, value) |
@@ -483,3 +486,6 @@ class Remote(unittest.TestCase): | |||
483 | # Test setVar on client side affects server | 486 | # Test setVar on client side affects server |
484 | d2.setVar('HELLO', 'other-world') | 487 | d2.setVar('HELLO', 'other-world') |
485 | self.assertEqual(d1.getVar('HELLO'), 'other-world') | 488 | self.assertEqual(d1.getVar('HELLO'), 'other-world') |
489 | # Test client side data is incorporated in python expansion (which is done on server) | ||
490 | d2.setVar('FOO', 'bar') | ||
491 | self.assertEqual(d2.expand('${@d.getVar("FOO")}'), 'bar') | ||
diff --git a/bitbake/lib/bb/tinfoil.py b/bitbake/lib/bb/tinfoil.py index c551a9f1f7..720bf4b931 100644 --- a/bitbake/lib/bb/tinfoil.py +++ b/bitbake/lib/bb/tinfoil.py | |||
@@ -29,6 +29,7 @@ import bb.providers | |||
29 | import bb.taskdata | 29 | import bb.taskdata |
30 | import bb.utils | 30 | import bb.utils |
31 | import bb.command | 31 | import bb.command |
32 | import bb.remotedata | ||
32 | from bb.cookerdata import CookerConfiguration, ConfigParameters | 33 | from bb.cookerdata import CookerConfiguration, ConfigParameters |
33 | from bb.main import setup_bitbake, BitBakeConfigParameters, BBMainException | 34 | from bb.main import setup_bitbake, BitBakeConfigParameters, BBMainException |
34 | import bb.fetch2 | 35 | import bb.fetch2 |
@@ -69,8 +70,9 @@ class TinfoilDataStoreConnector: | |||
69 | return set(self.tinfoil.run_command('dataStoreConnectorGetKeys', self.dsindex)) | 70 | return set(self.tinfoil.run_command('dataStoreConnectorGetKeys', self.dsindex)) |
70 | def getVarHistory(self, name): | 71 | def getVarHistory(self, name): |
71 | return self.tinfoil.run_command('dataStoreConnectorGetVarHistory', self.dsindex, name) | 72 | return self.tinfoil.run_command('dataStoreConnectorGetVarHistory', self.dsindex, name) |
72 | def expandPythonRef(self, varname, expr): | 73 | def expandPythonRef(self, varname, expr, d): |
73 | ret = self.tinfoil.run_command('dataStoreConnectorExpandPythonRef', self.dsindex, varname, expr) | 74 | ds = bb.remotedata.RemoteDatastores.transmit_datastore(d) |
75 | ret = self.tinfoil.run_command('dataStoreConnectorExpandPythonRef', ds, varname, expr) | ||
74 | return ret | 76 | return ret |
75 | def setVar(self, varname, value): | 77 | def setVar(self, varname, value): |
76 | if self.dsindex is None: | 78 | if self.dsindex is None: |