git rev: master/f744edc0b8752b20c2a0335aa67312bc3b953507 Steps: 1. Download the poky source and set the environment. 2. Edit the conf/local.conf, add the following line: CORE_IMAGE_EXTRA_INSTALL += "ncurses-lib12344" 3. Run "bitbake -g core-image-sato" Because the package "ncurses-lib12344" doesn't exist. The bitbake -g should report this error. But now it can not found this error. When run "bitbake ncurses-lib12344", it can report the error: ERROR: Nothing PROVIDES 'ncurses-lib12344'
This is a bit tricky. Sometimes it is useful to be able to analyse the dependency chain to find out where something that is not provided is being pulled in. I'd expect bitbake -g to warn rather than error in this situation and include the nonexistent items in the graphs.
bitbake -g can find out the no rprovider packages, this case is because ncurses-lib12344 is in ncurses' PACKAGES_DYNAMIC: PACKAGES_DYNAMIC = "^${PN}-lib.*" The "^${PN}-lib.*" matches ncurses-lib12344, so there is no errors when "bitbake -g" or bitbake <image-recipe>". I think that we'd better not warn such a case since there are many dynamic packages otherwise there would be too many warnings, for example, the perl and kernel modules, maybe we can print a debug info, here is the patch: diff --git a/bitbake/lib/bb/providers.py b/bitbake/lib/bb/providers.py index 3d0fb48..c9ca742 100644 --- a/bitbake/lib/bb/providers.py +++ b/bitbake/lib/bb/providers.py @@ -376,5 +376,6 @@ def getRuntimeProviders(dataCache, rdepend): regexp_cache[pattern] = regexp if regexp.match(rdepend): rproviders += dataCache.packages_dynamic[pattern] + logger.debug(1, "Assuming %s is a dynamic package, but it may not exist" % rdepend) return rproviders
Merged into master: http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=e605ecfd95d2b1573cb51de01c2e0c72e10b8ae0
Verified with: e605ecfd95d2b1573cb51de01c2e0c72e10b8ae0 Works as Robert Yang described above.