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 :) regards, Koen _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
