diff options
| -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: |
