* [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