[poky] [PULL]Fix adding GDBM_File module for perl

Mark Hatle mark.hatle at windriver.com
Fri Nov 5 09:14:30 PDT 2010


On 11/5/10 8:34 AM, Richard Purdie wrote:
> On Mon, 2010-11-01 at 14:32 -0500, Mark Hatle wrote:
>> I've been doing some thinking about how various perl and related components
>> should be implemented if they do potentially optional things.
>>
>> My concern is that by adding gdbm to the build, that other components will
>> change and potentially require more disk space.  We really need a way to
>> optionally use gdbm, if available in these configurations.  I'm really not sure
>> if there is currently a way to tell bitbake:
>>
>> I really want gdbm, but if nothing else wants it.. I don't want it.  Then for
>> LSB specific builds, we manually require gdbm as an LSB requirement (due to the
>> gdbm perl module requirements.)
>>
>> Richard, any suggestions on how to work with this?
>
> The trouble is the configuration is entirely deterministic by design. At
> this point people start talking about Gentoo USE flags and how we should
> add them and how wonderful the world would be.
>
> To talk through the use case, I run "bitbake poky-image-sato" which lets
> say doesn't need gdbm so perl is built without gdbm.
>
> I then "bitbake poky-image-sdk" which does include it. Does perl get
> rebuilt?

In our (WR) environment with the checksums, yes it would get rebuilt as the 
referenced source packages available changes, so the "dynamic build-time 
dependency" set will also change.

> Another issue is the perl packages themselves. These can differ
> depending on whether gdbm was included or not. If I hand you two perl
> package rpms, how do you tell the difference?

We only provide the right set for the filesystem we're constructing.  Obviously 
Poky is different in this regards as there is no single set of available 
packages for a particular build set.. it's all packages.  This is something that 
will have to be figured out.

The only thing that comes to the top of my head right now is the dynamic PR 
numbers in how the git checks do their numbering when things change.  Not 
exactly deterministic though.

> Obviously you can mark them somehow or embed data into them but there is
> no mechanism for this in some packaging systems. It makes maintenance of
> feeds very hard as the build order can drastically change the contents
> of the feeds.
>
> One "middle ground" solution I've considered is extended use of the
> DISTRO_FEATURES variable. By default this would be a pretty inclusive
> list of things like "gdbm". The perl recipe would only include gdbm if
> it was included in the list. The user can then customise the
> DISTRO_FEATURES list and remove things they don't care about. Presumably
> under this scenario, gdbm itself could exit with an error if someone
> tried to build it and it wasn't listed.

I think this is likely the best approach for the way things are done by Poky.  A 
set of known features that have system wide affects.  These features are static 
and allow someone to develop what they want, vs what is "discovered" by the 
dependency mechanisms.

For instance, the following items come to mind as being able to be switched on 
an off "easily" for many systems:

SE Linux
PAM
Berkley DB
gdbm
readline
ncurses
perl
python
Xorg
tcp_wrappers

but unfortunately you start looking at that list, and you think of other things 
like mysql, postgresql, gnutls, openssl... etc..

So whatever mechanism is selected needs to be able to be extended easily.  Even 
if Poky and the Poky recipes don't directly support those extensions, someone 
will want a way to say "I don't want foo", and then in turn go through and 
remove foo from anything that can do it dynamically.

> Checksums will allow us to handle dynamically rebuilding anything that
> changes when you edit that variable.
>
> Does that give us a solution that would work for you?

Ya, the distro_feature list is good.. it gives us a more workable set to develop 
and test against.. but we'll need to have guidelines as to what is appropriate 
(or not) to add to that set.

And similar to the license filtering.. if the functionality is _off_, we should 
also figure out a way to block that component from coming into the build.

--Mark

> Cheers,
>
> Richard
>
>
>




More information about the poky mailing list