Op 27 jan. 2012, om 14:07 heeft Richard Purdie het volgende geschreven: > On Fri, 2012-01-27 at 12:55 +0100, Koen Kooi wrote: >> Op 27 jan. 2012, om 10:50 heeft Richard Purdie het volgende geschreven: >> >>> On Fri, 2012-01-27 at 10:45 +0100, Koen Kooi wrote: >>>> Op 27 jan. 2012, om 00:52 heeft Richard Purdie het volgende geschreven: >>>> >>>>> On Fri, 2012-01-27 at 00:17 +0100, Koen Kooi wrote: >>>>>> Op 26 jan. 2012, om 21:51 heeft Richard Purdie het volgende geschreven: >>>>>> >>>>>>> On Thu, 2012-01-26 at 18:03 +0100, Koen Kooi wrote: >>>>>>>> If a recipe packages multiple versions of shlib (e.g. powervr drivers) >>>>>>>> we only want the shlib code to pickup $PN, not $PN-foo subpackages. >>>>>>>> This keeps backward compatibility with the global PRIVATE_LIBS usage >>>>>>>> if no per package PRIVATE_LIBS are set for a given package. In other >>>>>>>> words: this doesn't break the firefox recipe. >>>>>>>> >>>>>>>> Signed-off-by: Koen Kooi <[email protected]> >>>>>>>> --- >>>>>>>> meta/classes/package.bbclass | 5 ++++- >>>>>>>> 1 files changed, 4 insertions(+), 1 deletions(-) >>>>>>>> >>>>>>>> diff --git a/meta/classes/package.bbclass >>>>>>>> b/meta/classes/package.bbclass >>>>>>>> index 45447e3..22a76cf 100644 >>>>>>>> --- a/meta/classes/package.bbclass >>>>>>>> +++ b/meta/classes/package.bbclass >>>>>>>> @@ -1246,7 +1246,8 @@ python package_do_shlibs() { >>>>>>>> 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 not private_libs_pkg >>>>>>>> or -1 == private_libs_pkg.find(this_soname): >>>>>>>> + >>>>>>>> sonames.append(this_soname) >>>>>>>> if libdir_re.match(root): >>>>>>>> needs_ldconfig = True >>>>>>>> if snap_symlinks and (file != >>>>>>>> this_soname): >>>>>>>> @@ -1328,6 +1329,8 @@ python package_do_shlibs() { >>>>>>>> shlib_provider = {} >>>>>>>> private_libs = d.getVar('PRIVATE_LIBS', True) >>>>>>>> for pkg in packages.split(): >>>>>>>> + if not private_libs: >>>>>>>> + private_libs_pkg = d.getVar('PRIVATE_LIBS_' + >>>>>>>> pkg, True) >>>>>>> >>>>>>> You might as well just put: >>>>>>> >>>>>>> private_libs = d.getVar('PRIVATE_LIBS_' + pkg, >>>>>>> True) >>>>>>> >>>>>>> and drop the first bit of the patch. >>>>>> >>>>>> Wouldn't that kill backward compatibility? >>>>> >>>>> No, since it would only take effect if the plain PRIVATE_LIBS was not >>>>> set... >>>> >>>> The problem with the 'private_libs' var is that it's global and this needs >>>> a pkg local variable. >>> >>> I see your point. How about just doing: >>> >>> private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or >>> d.getVar('PRIVATE_LIBS', True) >>> >>> ? >> >> That would still set the global variable when it encounters a >> subpackage with PRIVATE_LIBS set. And that would mean it will come >> down to carefully ordering PACKAGES and hoping the class iterates them >> in the same order. >> >>> The code just looks more complex in your patch than I think it needs >> to be. >> >> I agree but I couldn't figure out a way that keeps both the old global >> syntax working and enables the per-package one to work as well. But I >> must admit that I lack the most basic python skills :) > > I was meaning to do: > > shlib_provider = {} > - private_libs = d.getVar('PRIVATE_LIBS', True) > for pkg in packages.split(): > + private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or > d.getVar('PRIVATE_LIBS', True) > needs_ldconfig = False > bb.debug(2, "calculating shlib provides for %s" % pkg) > > so private_libs is reset each time to the correct value.
I'll try a build with that and send a v2 of the patch if it works as we expect it :) _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
