On Sun, Jan 19, 2014 at 04:23:35PM +0100, Martin Jansa wrote:
> * when package contains some files matching "^.*\.so", but in directory
> not default linker search paths (e.g. /opt/package/bundled-lib/libfoo.so)
> don't register it as libfoo provider, because it's possible that there
> is different package providing libfoo.so in ${libdir} and that would
> be better shlib provider for other packages to depend on
> * recipes providing libs intentionally in some other directory can
> define own SHLIBSSEARCHDIRS valueThis one is the same as v1, sent by accident when sending v3 of 2/5. > [YOCTO #4628] > > Signed-off-by: Martin Jansa <[email protected]> > --- > meta/classes/package.bbclass | 26 +++++++++++++++++++++++--- > 1 file changed, 23 insertions(+), 3 deletions(-) > > diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass > index 9b511a6..a9e32f2 100644 > --- a/meta/classes/package.bbclass > +++ b/meta/classes/package.bbclass > @@ -1322,6 +1322,9 @@ python package_do_filedeps() { > SHLIBSDIRS = "${PKGDATA_DIR}/${MLPREFIX}shlibs" > SHLIBSWORKDIR = "${PKGDESTWORK}/${MLPREFIX}shlibs" > > +# default search path when searching for shlibs provided by package > +SHLIBSSEARCHDIRS ?= "${baselib} ${libdir}" > + > python package_do_shlibs() { > import re, pipes > > @@ -1332,6 +1335,20 @@ python package_do_shlibs() { > > lib_re = re.compile("^.*\.so") > libdir_re = re.compile(".*/%s$" % d.getVar('baselib', True)) > + > + shlibs_search_dirs = d.getVar('SHLIBSSEARCHDIRS', True) > + shlibs_search_dirs_re_txt = "" > + for dir in shlibs_search_dirs.split(' '): > + # strip leading and trailing slash, it's added in regexp > + if dir.endswith("/"): > + dir = dir[:-1] > + if dir.startswith("/"): > + dir = dir[1:] > + if shlibs_search_dirs_re_txt: > + shlibs_search_dirs_re_txt += "|" > + shlibs_search_dirs_re_txt += "(^.*/%s/.*$)" % dir > + shlibs_search_dirs_re = re.compile(shlibs_search_dirs_re_txt) > + bb.debug(2, "will use following RE to search for provides sonames %s" % > shlibs_search_dirs_re_txt) > > packages = d.getVar('PACKAGES', True) > targetos = d.getVar('TARGET_OS', True) > @@ -1390,9 +1407,12 @@ python package_do_shlibs() { > if m: > 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): > - sonames.append(this_soname) > + if shlibs_search_dirs_re.match(file): > + # 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): > + sonames.append(this_soname) > + else: > + bb.debug(2, "ignoring soname %s from %s, because > path doesn't match %s" % (this_soname, file, shlibs_search_dirs_re_txt)) > if libdir_re.match(os.path.dirname(file)): > needs_ldconfig = True > if snap_symlinks and (os.path.basename(file) != this_soname): > -- > 1.8.5.2 > -- Martin 'JaMa' Jansa jabber: [email protected]
signature.asc
Description: Digital signature
_______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
