[OE-core] Circular dependency of do_populate_sysroot

richard.purdie at linuxfoundation.org richard.purdie at linuxfoundation.org
Sun Apr 7 21:35:58 UTC 2019


On Sun, 2019-04-07 at 21:18 +0200, Stefan Herbrechtsmeier wrote:
> I'm working towards an integrated Node.js support without npm and
> have a  problem with a circular dependency of do_populate_sysroot for
> the native build.
> 
> I have two recipes a.bb and b.bb which have no DEPENDS but a 
> RDEPENDS_${PN} between each other. This is no problem for a cross
> build but leads to the following error for the native build:
> Task virtual:native:a.bb:do_populate_sysroot has circular dependency
> on virtual:native:b.bb:do_populate_sysroot.
> 
> It looks like the problem comes from the following lines in 
> native.bbclass and commit eea86c4f0a960d0094571a78dc0cf9d46d162a22:
> RECIPERDEPTASK = "do_populate_sysroot"
> do_populate_sysroot[rdeptask] = "${RECIPERDEPTASK}"
> 
> Is the rdeptask on the same task really needed or is it possible to
> use  an other task after do_populate_sysroot as sync task which run
> time dependency on the other do_populate_sysroot task?

You're saying A runtime depends on B and B runtime depends on A.

The code is quite correctly therefore trying to install B into A's
sysroot since you might want to run it and also install A into B's
sysroot since that also depends on it and you may want to run that.

The dependency is therefore correct and you're trying to ask the system
to do something impossible.

You likely need to decide that the native A doesn't really runtime
depend on native B or vice versa and break at least the native
dependency.

Cheers,

Richard



More information about the Openembedded-core mailing list