summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorInsu Park <insu0.park@gmail.com>2023-12-27 23:54:18 +0900
committerSteve Sakoman <steve@sakoman.com>2024-01-04 05:00:12 -1000
commit8ffcfd69b52aa2fe573ef877ae8ad9fe9f845919 (patch)
treedc6c91132a8835b6fc84c4517c82444e94c61cf5 /bitbake/lib
parentf754b5d45b504e7486364ea9cfcb5f96086084bc (diff)
downloadpoky-8ffcfd69b52aa2fe573ef877ae8ad9fe9f845919.tar.gz
bitbake: data: Add missing dependency handling of remove operator
A recipe variable handles its dependencies even on the "contains" variables within the "inline Python expressions" like bb.utils.filter(). And it also handles those in the append operator correctly, but the problem is that it does not so in the remove operator. Fix it by adding the missing dependencies every time the remove operator has been handled. Also add a test case to check if the override operators handle dependencies correctly. (Bitbake rev: 23639edfbbb3fced7606dce211db8a31c5766585) Signed-off-by: Insu Park <insu0.park@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Cherry-picked from master: b90520eedb1dbc7f6a3928d089fe74fafb864eb5 - Conflicts in data.py are resolved as the master branch moved handle_contains() and handle_remove() out of the try block. - The test code in codeparser.py are modified as the master branch added three more arguments to the build_dependencies(). Signed-off-by: Insu Park <insu0.park@gmail.com> Signed-off-by: Steve Sakoman <steve@sakoman.com>
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/data.py1
-rw-r--r--bitbake/lib/bb/tests/codeparser.py26
2 files changed, 27 insertions, 0 deletions
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py
index c09d9b04bb..45411055b9 100644
--- a/bitbake/lib/bb/data.py
+++ b/bitbake/lib/bb/data.py
@@ -310,6 +310,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, ignored_vars, d):
310 value += "\n_remove of %s" % r 310 value += "\n_remove of %s" % r
311 deps |= r2.references 311 deps |= r2.references
312 deps = deps | (keys & r2.execs) 312 deps = deps | (keys & r2.execs)
313 value = handle_contains(value, r2.contains, exclusions, d)
313 return value 314 return value
314 315
315 if "vardepvalue" in varflags: 316 if "vardepvalue" in varflags:
diff --git a/bitbake/lib/bb/tests/codeparser.py b/bitbake/lib/bb/tests/codeparser.py
index 71ed382ab8..36ed4e196b 100644
--- a/bitbake/lib/bb/tests/codeparser.py
+++ b/bitbake/lib/bb/tests/codeparser.py
@@ -430,6 +430,32 @@ esac
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'])
432 432
433 def test_contains_vardeps_override_operators(self):
434 # Check override operators handle dependencies correctly with the contains functionality
435 expr_plain = 'testval'
436 expr_prepend = '${@bb.utils.filter("TESTVAR1", "testval1", d)} '
437 expr_append = ' ${@bb.utils.filter("TESTVAR2", "testval2", d)}'
438 expr_remove = '${@bb.utils.contains("TESTVAR3", "no-testval", "testval", "", d)}'
439 # Check dependencies
440 self.d.setVar('ANOTHERVAR', expr_plain)
441 self.d.prependVar('ANOTHERVAR', expr_prepend)
442 self.d.appendVar('ANOTHERVAR', expr_append)
443 self.d.setVar('ANOTHERVAR:remove', expr_remove)
444 self.d.setVar('TESTVAR1', 'blah')
445 self.d.setVar('TESTVAR2', 'testval2')
446 self.d.setVar('TESTVAR3', 'no-testval')
447 deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), self.d)
448 self.assertEqual(sorted(values.splitlines()),
449 sorted([
450 expr_prepend + expr_plain + expr_append,
451 '_remove of ' + expr_remove,
452 'TESTVAR1{testval1} = Unset',
453 'TESTVAR2{testval2} = Set',
454 'TESTVAR3{no-testval} = Set',
455 ]))
456 # Check final value
457 self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['testval2'])
458
433 #Currently no wildcard support 459 #Currently no wildcard support
434 #def test_vardeps_wildcards(self): 460 #def test_vardeps_wildcards(self):
435 # self.d.setVar("oe_libinstall", "echo test") 461 # self.d.setVar("oe_libinstall", "echo test")