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

Reply via email to