From 525979f3f68f85d9b590632dc181b7038b1ed7ee Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Sun, 6 Sep 2015 18:48:13 -0700 Subject: package_manager.py: search provides when not found by pkgname Fixed when: PACKAGE_CLASSES = "package_rpm" IMAGE_INSTALL_append = " perl-module-warnings-register" $ bitbake core-image-minimal [snip] ERROR: perl-module-warnings-register not found in the base feeds [snip] And it works well when PACKAGE_CLASSES = "package_ipk" since perl provides perl-module-warnings-register, the "smart install perl-module-warnings-register" also works well, this was because _search_pkg_name_in_feeds() only searched pkg name, but no provides, this patch fixes the problem. (From OE-Core rev: 476f9ab6e37bd516919862835e6e00c960a9e242) Signed-off-by: Robert Yang Signed-off-by: Richard Purdie --- meta/lib/oe/package_manager.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'meta/lib/oe/package_manager.py') diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py index 810b728870..292ed44461 100644 --- a/meta/lib/oe/package_manager.py +++ b/meta/lib/oe/package_manager.py @@ -760,6 +760,22 @@ class RpmPM(PackageManager): # bb.note('%s -> %s' % (pkg, pkg + '@' + arch)) return pkg + '@' + arch + # Search provides if not found by pkgname. + bb.note('Not found %s by name, searching provides ...' % pkg) + cmd = "%s %s query --provides %s --show-format='$name-$version'" % \ + (self.smart_cmd, self.smart_opt, pkg) + cmd += " | sed -ne 's/ *Provides://p'" + bb.note('cmd: %s' % cmd) + output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) + # Found a provider + if output: + bb.note('Found providers for %s: %s' % (pkg, output)) + for p in output.split(): + for arch in feed_archs: + arch = arch.replace('-', '_') + if p.rstrip().endswith('@' + arch): + return p + return "" ''' -- cgit v1.2.3-54-g00ecf