* [PATCH] package bbclass: allow per package PRIVATE_LIBS
@ 2012-01-26 17:03 Koen Kooi
2012-01-26 20:51 ` Richard Purdie
0 siblings, 1 reply; 9+ messages in thread
From: Koen Kooi @ 2012-01-26 17:03 UTC (permalink / raw)
To: openembedded-core; +Cc: Koen Kooi
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 <koen@dominion.thruhere.net>
---
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)
needs_ldconfig = False
bb.debug(2, "calculating shlib provides for %s" % pkg)
--
1.7.2.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] package bbclass: allow per package PRIVATE_LIBS
2012-01-26 17:03 [PATCH] package bbclass: allow per package PRIVATE_LIBS Koen Kooi
@ 2012-01-26 20:51 ` Richard Purdie
2012-01-26 23:17 ` Koen Kooi
0 siblings, 1 reply; 9+ messages in thread
From: Richard Purdie @ 2012-01-26 20:51 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer; +Cc: Koen Kooi
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 <koen@dominion.thruhere.net>
> ---
> 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.
Cheers,
Richard
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] package bbclass: allow per package PRIVATE_LIBS
2012-01-26 20:51 ` Richard Purdie
@ 2012-01-26 23:17 ` Koen Kooi
2012-01-26 23:52 ` Richard Purdie
0 siblings, 1 reply; 9+ messages in thread
From: Koen Kooi @ 2012-01-26 23:17 UTC (permalink / raw)
To: Richard Purdie; +Cc: Patches and discussions about the oe-core layer
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 <koen@dominion.thruhere.net>
>> ---
>> 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?
regards,
Koen
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] package bbclass: allow per package PRIVATE_LIBS
2012-01-26 23:17 ` Koen Kooi
@ 2012-01-26 23:52 ` Richard Purdie
2012-01-27 9:45 ` Koen Kooi
0 siblings, 1 reply; 9+ messages in thread
From: Richard Purdie @ 2012-01-26 23:52 UTC (permalink / raw)
To: Koen Kooi; +Cc: Patches and discussions about the oe-core layer
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 <koen@dominion.thruhere.net>
> >> ---
> >> 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...
Cheers,
Richard
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] package bbclass: allow per package PRIVATE_LIBS
2012-01-26 23:52 ` Richard Purdie
@ 2012-01-27 9:45 ` Koen Kooi
2012-01-27 9:50 ` Richard Purdie
0 siblings, 1 reply; 9+ messages in thread
From: Koen Kooi @ 2012-01-27 9:45 UTC (permalink / raw)
To: Richard Purdie; +Cc: Patches and discussions about the oe-core layer
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 <koen@dominion.thruhere.net>
>>>> ---
>>>> 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.
regards,
Koen
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] package bbclass: allow per package PRIVATE_LIBS
2012-01-27 9:45 ` Koen Kooi
@ 2012-01-27 9:50 ` Richard Purdie
2012-01-27 11:55 ` Koen Kooi
0 siblings, 1 reply; 9+ messages in thread
From: Richard Purdie @ 2012-01-27 9:50 UTC (permalink / raw)
To: Koen Kooi; +Cc: Patches and discussions about the oe-core layer
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 <koen@dominion.thruhere.net>
> >>>> ---
> >>>> 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)
?
The code just looks more complex in your patch than I think it needs to be.
Cheers,
Richard
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] package bbclass: allow per package PRIVATE_LIBS
2012-01-27 9:50 ` Richard Purdie
@ 2012-01-27 11:55 ` Koen Kooi
2012-01-27 13:07 ` Richard Purdie
0 siblings, 1 reply; 9+ messages in thread
From: Koen Kooi @ 2012-01-27 11:55 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
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 <koen@dominion.thruhere.net>
>>>>>> ---
>>>>>> 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
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] package bbclass: allow per package PRIVATE_LIBS
2012-01-27 11:55 ` Koen Kooi
@ 2012-01-27 13:07 ` Richard Purdie
2012-01-27 14:32 ` Koen Kooi
0 siblings, 1 reply; 9+ messages in thread
From: Richard Purdie @ 2012-01-27 13:07 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
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 <koen@dominion.thruhere.net>
> >>>>>> ---
> >>>>>> 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.
Cheers,
Richard
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] package bbclass: allow per package PRIVATE_LIBS
2012-01-27 13:07 ` Richard Purdie
@ 2012-01-27 14:32 ` Koen Kooi
0 siblings, 0 replies; 9+ messages in thread
From: Koen Kooi @ 2012-01-27 14:32 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
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 <koen@dominion.thruhere.net>
>>>>>>>> ---
>>>>>>>> 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 :)
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2012-01-27 14:40 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-26 17:03 [PATCH] package bbclass: allow per package PRIVATE_LIBS Koen Kooi
2012-01-26 20:51 ` Richard Purdie
2012-01-26 23:17 ` Koen Kooi
2012-01-26 23:52 ` Richard Purdie
2012-01-27 9:45 ` Koen Kooi
2012-01-27 9:50 ` Richard Purdie
2012-01-27 11:55 ` Koen Kooi
2012-01-27 13:07 ` Richard Purdie
2012-01-27 14:32 ` Koen Kooi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox