On Wed, 2020-01-22 at 15:46 +0000, Rasmus Villemoes wrote: > On 22/01/2020 15.35, Richard Purdie wrote: > > Bitbake can only detect direct references to variables. The code > > above only runs at configure time, not at parse time so its not > > really surprising that bitbake can't know what its doing. > > Well, I thought that as well at first. But there must be something > done at run-time to feed back the variable dependencies, because if I > add a completely dumb > > python do_configure() { > import fileinput > + d.getVar("VARIABLE") # silly > with open("foo.txt", "w") as out: > for line in > fileinput.input(files=d.getVar("FOO_INPUT").split()): > line = d.expand(line) > out.write(line) > } > > build the recipe (because now it has of course changed), and then > change VARIABLE, the recipe does get re-built. Or does bitbake > specifically look for d.getVar(<literal>) when it parses a python > function?
Bitbake has ASTs for all its python fragments and can search those for getVar() calls. It will spot getVar("X") but can't know what is in d.expand(line). > > You'd need to read the data from this file at parse time for > > bitbake to > > stand some chance of seeing it, or manually set the variables it > > depends upon using the vardeps flag. > > > > Something like: > > > > do_configure[vardeps] = "${@my_depends_function(d)}" > > > > where my_depends_function would return a list of variables it > > references. > > > > Reading files like that at parse time doesn't work out well for > > performance. > > Yeah, so I'd very much like to avoid that, and the above observation > suggests that I might be able to do the expansion manually, just > looking for the \$\{...\} regexp and calling getVar to find the > replacement. But that seems like something that should be solved > already. Well, if you have the expansion, just put it in a variable the function references... Cheers, Richard
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#48085): https://lists.yoctoproject.org/g/yocto/message/48085 Mute This Topic: https://lists.yoctoproject.org/mt/69979676/21656 Group Owner: yocto+ow...@lists.yoctoproject.org Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-