When defining a new image class we ran into this problem. do_sdk_depends[depends] = ”${@get_ext_sdk_depends(d) ...” When parsed in data_smart.py DataSmart.expandsWithRefs test for the presence of ”${”, and if found, it tries to expand the variable, but due to the presence of the ’@’, the regular expression does not find a match, and somewhere an exception is triggered causing the build to abort. The problem was seen on the sumo branch.
I tried checking for the get_ext_sdk_depends string, and replacing it to a call to the function, which is not visible inside data_smart.py. Then tried just removing it, which exposed a circular dependency, which was not present in the pyro branch. Will compare the dependencies with those of a build without our image class to find out how to resolve the circular dependency.
There is information on the yocto mailing list about this, its a circular task dependency problem. We need to see if we can improve the error message in such cases.
I sent a patch which will compare the after and before task list and check them vs a list of tasks where we know the order. If a combination is found which would cause a circular dependency, an error is emitted. It will not cover every circular error, but it should be quick, and catch a significant number of errors.
https://www.yoctoproject.org/pipermail/yocto/2019-January/043844.html
Patch sent to make the circular task errors fatal with a sensible error message
http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=3a8cb949a9c11d7fcab55c2036f8be306beb4e37