summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Jansa <martin.jansa@gmail.com>2014-01-28 15:26:10 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-01-29 17:37:58 +0000
commit2dec075478f977b554061dd9a4b2b8ff4af3597a (patch)
tree15832b1e441c24fea8b8d72d8e1d081c862691dc
parent5df33fc62f2d3a5a15dc387ed26cb7da8d9fbbe1 (diff)
downloadopenembedded-core-2dec075478f977b554061dd9a4b2b8ff4af3597a.tar.gz
openembedded-core-2dec075478f977b554061dd9a4b2b8ff4af3597a.tar.bz2
openembedded-core-2dec075478f977b554061dd9a4b2b8ff4af3597a.zip
package.bbclass: Don't search for providers of PRIVATE_LIBS
* split PRIVATE_LIBS and don't use find(), so that libfoo cannot be found in PRIVATE_LIBS = "libfoobar" Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/package.bbclass13
1 files changed, 11 insertions, 2 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 70f9aaa205..ed88dafc2c 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1402,7 +1402,7 @@ python package_do_shlibs() {
this_soname = m.group(1)
if not this_soname in sonames:
# if library is private (only used by package) then do not build shlib for it
- if not private_libs or -1 == private_libs.find(this_soname):
+ if not private_libs or this_soname not in private_libs:
sonames.append(this_soname)
if libdir_re.match(os.path.dirname(file)):
needs_ldconfig = True
@@ -1486,7 +1486,8 @@ python package_do_shlibs() {
read_shlib_providers()
for pkg in packages.split():
- private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or d.getVar('PRIVATE_LIBS', True)
+ private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or d.getVar('PRIVATE_LIBS', True) or ""
+ private_libs = private_libs.split()
needs_ldconfig = False
bb.debug(2, "calculating shlib provides for %s" % pkg)
@@ -1556,6 +1557,14 @@ python package_do_shlibs() {
deps = list()
for n in needed[pkg]:
+ # if n is in private libraries, don't try to search provider for it
+ # this could cause problem in case some abc.bb provides private
+ # /opt/abc/lib/libfoo.so.1 and contains /usr/bin/abc depending on system library libfoo.so.1
+ # but skipping it is still better alternative than providing own
+ # version and then adding runtime dependency for the same system library
+ if private_libs and n in private_libs:
+ bb.debug(2, '%s: Dependency %s covered by PRIVATE_LIBS' % (pkg, n))
+ continue
if n in shlib_provider.keys():
(dep_pkg, ver_needed) = shlib_provider[n]