If you add "sshd" to IMAGE_INSTALL for an image, and then start building the image, bitbake will warn you that there are multiple providers for sshd (i.e. dropbear and openssh, since both have this in RPROVIDES for their packages) and it suggests that you set PREFERRED_PROVIDER_sshd to select one. Setting the following though does not resolve the warning: PREFERRED_PROVIDER_ssd = "openssh" It looks to me like when looking at the runtime providers of "sshd", the code in lib/bb/providers.py is mistakenly looking for PREFERRED_PROVIDER settings on "openssh" and "dropbear" rather than "sshd" which means the above is never picked up.
For clarification that was just a typo in the comment above, I meant to type PREFERRED_PROVIDER_sshd rather than PREFERRED_PROVIDER_ssd. I did use the former when testing :)
This may be the same issue as bug 5044; at the very least it's related.
Well, I can see this issue happening in my case, too: NOTE: multiple providers are available for runtime packagegroup-foo-dbg (packagegroup-foo-dbg, packagegroup-foo) NOTE: consider defining a PREFERRED_PROVIDER entry to match packagegroup-foo-dbg I am trying to include the non-dbg image in the -dbg image since the debug image sets up some boilerplate which is not yet separated into a common file that both images could include. If that was done, I could avoid including the non-dbg image into the -dbg, but that is currently not done and so, I am seeing this warning, too.
This is frustrating because I am now wiping the build folder away again, but then I have to wait something like 40 minutes to 2 hours. Can someone explain what the real issue and potential workarounds? I think, rebuilding everything without the conflicting image (non-dbg) is too much burden on the users' shoulder.
I came across these bugs in poky 1.6.3 (daisy) with multiple package providers. I fixed bug 6149 with just bitbake patch. I came across another bug with this when I tried the bitbake fix on master. With the test case IMAGE_INSTALL_append = " sshd" PREFERRED_PROVIDER_sshd="dropbear" meta/lib/oe/package_manager.py reported a package not found in the base feeds. The file image.bbclass starts copies IMAGE_INSTALL to PACKAGE_INSTALL and performs fix ups for multilib, etc. I added another function (rootfs_process_preferred_providers) to replace sshd in PACKAGE_INSTALL with dropbear. This eliminated the error. The mega-manual is vague when it describes what can be specified in PREFERRED_PROVIDER: an item. And the code partially supports run-time packages as a valid item on the left. My implementation assumes a package name on the right. Yocto bug 5044 suggests traversing from the package name to the virtual/* provider, but I have not thought through how this might work. IMAGE_INSTALL_append = " libasound-module-bluez" PREFERRED_PROVIDER_libasound-module-bluez="bluez4" I got this working on poky 1.6.3, but some changes to the bluez recipes on master seemed to mitigate the original problem. See the bitbake/oe-core mailing list for the patches.
Was this also resolved when bug 5044 was closed?
Yes, #5004 did fix this too. I tested: IMAGE_INSTALL:append = " sshd" PREFERRED_RPROVIDER_sshd = "dropbear" and IMAGE_INSTALL:append = " sshd" PREFERRED_RPROVIDER_sshd = "openssh" which worked as expected (note the R in RPROVIDER).