diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-11-27 21:16:16 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-12-17 08:52:28 +0000 |
commit | f3bcd3c9a91f6212c30b9c778c11f3c8a9f6f1d4 (patch) | |
tree | 760b8dac27191ea1a625476d84c0651aa2788a5f /bitbake/lib/bb/tests | |
parent | a225aa3ec4726161172ca4b03d02751b1250e7ae (diff) | |
download | poky-f3bcd3c9a91f6212c30b9c778c11f3c8a9f6f1d4.tar.gz |
bitbake: ast/data/codeparser: Add dependencies from python module functions
Moving code into python modules is a very effective way to reduce parsing
time and overhead in recipes. The downside has always been that any
dependency information on which variables those functions access is lost
and the hashes can therefore become less reliable.
This patch adds parsing of the imported module functions and that dependency
information is them injected back into the hash dependency information.
Intermodule function references are resolved to the full function
call names in our module namespace to ensure interfunction dependencies
are correctly handled too.
(Bitbake rev: 605c478ce14cdc3c02d6ef6d57146a76d436a83c)
(Bitbake rev: 91441e157e495b02db44e19e836afad366ee8924)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/tests')
-rw-r--r-- | bitbake/lib/bb/tests/codeparser.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/bitbake/lib/bb/tests/codeparser.py b/bitbake/lib/bb/tests/codeparser.py index 71ed382ab8..a508f23bcb 100644 --- a/bitbake/lib/bb/tests/codeparser.py +++ b/bitbake/lib/bb/tests/codeparser.py | |||
@@ -318,7 +318,7 @@ d.getVar(a(), False) | |||
318 | "filename": "example.bb", | 318 | "filename": "example.bb", |
319 | }) | 319 | }) |
320 | 320 | ||
321 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), self.d) | 321 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), set(), self.d) |
322 | 322 | ||
323 | self.assertEqual(deps, set(["somevar", "bar", "something", "inexpand", "test", "test2", "a"])) | 323 | self.assertEqual(deps, set(["somevar", "bar", "something", "inexpand", "test", "test2", "a"])) |
324 | 324 | ||
@@ -365,7 +365,7 @@ esac | |||
365 | self.d.setVarFlags("FOO", {"func": True}) | 365 | self.d.setVarFlags("FOO", {"func": True}) |
366 | self.setEmptyVars(execs) | 366 | self.setEmptyVars(execs) |
367 | 367 | ||
368 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), self.d) | 368 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), set(), self.d) |
369 | 369 | ||
370 | self.assertEqual(deps, set(["somevar", "inverted"] + execs)) | 370 | self.assertEqual(deps, set(["somevar", "inverted"] + execs)) |
371 | 371 | ||
@@ -375,7 +375,7 @@ esac | |||
375 | self.d.setVar("FOO", "foo=oe_libinstall; eval $foo") | 375 | self.d.setVar("FOO", "foo=oe_libinstall; eval $foo") |
376 | self.d.setVarFlag("FOO", "vardeps", "oe_libinstall") | 376 | self.d.setVarFlag("FOO", "vardeps", "oe_libinstall") |
377 | 377 | ||
378 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), self.d) | 378 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), set(), self.d) |
379 | 379 | ||
380 | self.assertEqual(deps, set(["oe_libinstall"])) | 380 | self.assertEqual(deps, set(["oe_libinstall"])) |
381 | 381 | ||
@@ -384,7 +384,7 @@ esac | |||
384 | self.d.setVar("FOO", "foo=oe_libinstall; eval $foo") | 384 | self.d.setVar("FOO", "foo=oe_libinstall; eval $foo") |
385 | self.d.setVarFlag("FOO", "vardeps", "${@'oe_libinstall'}") | 385 | self.d.setVarFlag("FOO", "vardeps", "${@'oe_libinstall'}") |
386 | 386 | ||
387 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), self.d) | 387 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), set(), self.d) |
388 | 388 | ||
389 | self.assertEqual(deps, set(["oe_libinstall"])) | 389 | self.assertEqual(deps, set(["oe_libinstall"])) |
390 | 390 | ||
@@ -399,7 +399,7 @@ esac | |||
399 | # Check dependencies | 399 | # Check dependencies |
400 | self.d.setVar('ANOTHERVAR', expr) | 400 | self.d.setVar('ANOTHERVAR', expr) |
401 | self.d.setVar('TESTVAR', 'anothervalue testval testval2') | 401 | self.d.setVar('TESTVAR', 'anothervalue testval testval2') |
402 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), self.d) | 402 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), set(), self.d) |
403 | self.assertEqual(sorted(values.splitlines()), | 403 | self.assertEqual(sorted(values.splitlines()), |
404 | sorted([expr, | 404 | sorted([expr, |
405 | 'TESTVAR{anothervalue} = Set', | 405 | 'TESTVAR{anothervalue} = Set', |
@@ -418,14 +418,14 @@ esac | |||
418 | self.d.setVar('ANOTHERVAR', varval) | 418 | self.d.setVar('ANOTHERVAR', varval) |
419 | self.d.setVar('TESTVAR', 'anothervalue testval testval2') | 419 | self.d.setVar('TESTVAR', 'anothervalue testval testval2') |
420 | self.d.setVar('TESTVAR2', 'testval3') | 420 | self.d.setVar('TESTVAR2', 'testval3') |
421 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(["TESTVAR"]), self.d) | 421 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), set(["TESTVAR"]), self.d) |
422 | self.assertEqual(sorted(values.splitlines()), sorted([varval])) | 422 | self.assertEqual(sorted(values.splitlines()), sorted([varval])) |
423 | self.assertEqual(deps, set(["TESTVAR2"])) | 423 | self.assertEqual(deps, set(["TESTVAR2"])) |
424 | self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['testval3', 'anothervalue']) | 424 | self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['testval3', 'anothervalue']) |
425 | 425 | ||
426 | # Check the vardepsexclude flag is handled by contains functionality | 426 | # Check the vardepsexclude flag is handled by contains functionality |
427 | self.d.setVarFlag('ANOTHERVAR', 'vardepsexclude', 'TESTVAR') | 427 | self.d.setVarFlag('ANOTHERVAR', 'vardepsexclude', 'TESTVAR') |
428 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), self.d) | 428 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), set(), self.d) |
429 | self.assertEqual(sorted(values.splitlines()), sorted([varval])) | 429 | self.assertEqual(sorted(values.splitlines()), sorted([varval])) |
430 | self.assertEqual(deps, set(["TESTVAR2"])) | 430 | self.assertEqual(deps, set(["TESTVAR2"])) |
431 | self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['testval3', 'anothervalue']) | 431 | self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['testval3', 'anothervalue']) |