diff options
author | Martin Jansa <martin.jansa@gmail.com> | 2014-01-28 15:26:10 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-01-29 17:37:58 +0000 |
commit | 2dec075478f977b554061dd9a4b2b8ff4af3597a (patch) | |
tree | 15832b1e441c24fea8b8d72d8e1d081c862691dc | |
parent | 5df33fc62f2d3a5a15dc387ed26cb7da8d9fbbe1 (diff) | |
download | openembedded-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.bbclass | 13 |
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] |