[Openembedded-architecture] who should set default tunes?
Mark Hatle
mark.hatle at windriver.com
Tue May 2 21:06:51 UTC 2017
On 5/2/17 3:53 PM, Phil Blundell wrote:
> On Tue, 2017-05-02 at 15:29 -0500, Mark Hatle wrote:
>> On 5/2/17 2:41 PM, Phil Blundell wrote:
>>>
> - what upgrade and/or downgrade paths it wants to provide;
>>>
>>> - what political considerations (e.g. around endianness) it might
>>> have
>>> to take into account;
>>>
>>> - and no doubt many other things that might influence binary
>>> compatibility in one way or another.
>>
>> local project or BSP (via the tunes) is what I use to set these. My
>> distributions don't have these concerns.
>
> If your distributions don't have those concerns then they are not
> distributions, at least not in the sense that we've previously used
> this terminology in OE. I think a lot of what you consider to be
> "local project" configuration is what would by previous OE conventions
> be part of the DISTRO. Indeed, central to the concept of a DISTRO is
> that it completely defines the binary compatibility layer and,
> consequently, admits no local tinkering that would have an impact on
> the ABI of the binaries it generates. It sounds as though the meaning
> you are ascribing to DISTRO is more like "collection of source package
> options" and less like "full set of policies that will result in a
> coherent binary distribution".
A DISTRO to me is:
How do I collectively configure all of the sources to work together and create a
cohesive system. So it's about configuration of the individual parts, as well
as settings that affect everything as a whole.
The ABI really doesn't matter in that case. (I build distros for a large number
of architectures, optimizations and abis. If something does not work with a
specific combination, it's not generally the DISTRO job to sort that out --
instead the recipes (image, packagegroup, individual) is where I've put blocks
and preventing from things coming in.
> If you take a pre-existing DISTRO and then make some sort of
> configuration change to it via local.conf such that it is no longer
> binary compatible, you have effectively forked it into your own
> distribution. That's not necessarily a bad thing, but it's no longer
> the same DISTRO.
I don't see binary compatibility as a 'DISTRO' thing. I see it as a project thing.
But I do see system wide 'distro flags' or packageconfig changes that make
changes to produced packages as something to NOT do in a local.conf.
> Now, of course, it would be perfectly legitimate for a DISTRO to say
> that it doesn't care at all about binary compatibility between
> MACHINES, that it wants to build everything with PACKAGE_ARCH = MACHINE
> and that it wants every binary to be tuned to the limit. In that
> situation it might be useful for the BSP to expose some information
> that the DISTRO could use to obtain these results, i.e. "these are the
> settings that, if no other considerations apply, I would like you to
> use". But this should not diminish the primacy of the DISTRO when it
> comes to making its own ABI choices.
So I want a single distribution to work on:
IA32 - Core2 and better, 32-bit and 64-bit
ARM64 - armv4 (SF), armv7 (hf), and 64-bit
MIPS32 - o32
MISP64 - n32 and n64
PPC - 32 - hard float, soft-float and e500
Setting those switches inside of the distribution would be nearly impossible and
doesn't buy me any compatibility at all.
The individual machines I select know the defaults they need to work with for
the ABIs.
If I choose two machines that have some specific set of optimizations, then I'm
going to decide the optimization is worth it, or override that to a common set
as part of my local.conf.... since only I know what combinations and options I
need/want.
If you start making these decisions in the DISTRO file, then the distro file is
no longer 'generically useful' across the breadth of OE, but is now specific to
-your- configuration. While this is ok from a syntactic perspective, it is now
how I prefer to develop.
(I'm looking at this very much from an OSV point of view -- and also as someone
who doesn't care what the hardware platform is. I've been keeping things as
hardware agnostic as possible [userspace wise] for as long as I've been doing
Linux.)
So another way to look at it.
A distro defines the basic userspace configuration.
A BSP (machine) devices a specific hardware configuration.
An image (recipe) defines the filesystem contents.
(WIC config the partition layout...)
and the local.conf is specific to a project and how I want to override all of
the above. (With the understanding, the more I override the more I have to
maintain.)
--Mark
> p.
>
More information about the Openembedded-architecture
mailing list