All of lore.kernel.org
 help / color / mirror / Atom feed
* Layer manifest (topic touched at ELCE)
       [not found] <CAK18fxF5d+7JecsEHM=wGWGfzeyZPTVKbLbfygNqNoEcjnce0A@mail.gmail.com>
@ 2016-01-06 20:41 ` Andrei Gherzan
  2016-01-06 22:42   ` Mark Hatle
  0 siblings, 1 reply; 3+ messages in thread
From: Andrei Gherzan @ 2016-01-06 20:41 UTC (permalink / raw)
  To: Yocto Project; +Cc: Florin Ionut, Paul Eggleton, Alexandros Marinos

[-- Attachment #1: Type: text/plain, Size: 1007 bytes --]

Hello all,

We started a discussion at the last ELCE: layer manifest in a machine
parsable format. I'll make a short summary on what is this about.

In the current yocto layers structures, the only way to describe a layer is
through README. Which provides useful information like layer dependencies,
available targets, maybe available machines etc. First of all this
information is not standardized in any way and not machine parsable. So is
not an uncommon situation to get a BSP yocto layer and have no idea what to
do without actually looking into it. As well, there is no way of
automating, for example, cloning of dependencies or any other kind of
automations.

Now the questions is, would it make sense to define a layer manifest where
a layer would be fully described in a machine parsable way? Does yocto
community feel the need of such a file and maybe additionally have a script
which would be able to parse such a manifest and setup a build environment?


--
Andrei Gherzan

[-- Attachment #2: Type: text/html, Size: 1084 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Layer manifest (topic touched at ELCE)
  2016-01-06 20:41 ` Layer manifest (topic touched at ELCE) Andrei Gherzan
@ 2016-01-06 22:42   ` Mark Hatle
  2016-01-07  1:43     ` Trevor Woerner
  0 siblings, 1 reply; 3+ messages in thread
From: Mark Hatle @ 2016-01-06 22:42 UTC (permalink / raw)
  To: yocto

On 1/6/16 2:41 PM, Andrei Gherzan wrote:
> Hello all,
> 
> We started a discussion at the last ELCE: layer manifest in a machine parsable
> format. I'll make a short summary on what is this about.
> 
> In the current yocto layers structures, the only way to describe a layer is
> through README. Which provides useful information like layer dependencies,
> available targets, maybe available machines etc. First of all this information
> is not standardized in any way and not machine parsable. So is not an uncommon
> situation to get a BSP yocto layer and have no idea what to do without actually
> looking into it. As well, there is no way of automating, for example, cloning of
> dependencies or any other kind of automations. 
> 
> Now the questions is, would it make sense to define a layer manifest where a
> layer would be fully described in a machine parsable way? Does yocto community
> feel the need of such a file and maybe additionally have a script which would be
> able to parse such a manifest and setup a build environment?  

From a dependency perspective, there is a method to define layer dependencies.
If that is used properly it can help.  The problem I see though is the namespace
for layer dependencies is not really defined.

But using a combination of the defined dependencies and the layer index you
should be able to resolve "known" layers.  (Would also be nice if the index
looked for collisions as well...)

--Mark

> --
> Andrei Gherzan
> 
> 
> 



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Layer manifest (topic touched at ELCE)
  2016-01-06 22:42   ` Mark Hatle
@ 2016-01-07  1:43     ` Trevor Woerner
  0 siblings, 0 replies; 3+ messages in thread
From: Trevor Woerner @ 2016-01-07  1:43 UTC (permalink / raw)
  To: yocto

On 01/06/16 17:42, Mark Hatle wrote:
> But using a combination of the defined dependencies and the layer index you
> should be able to resolve "known" layers.  (Would also be nice if the index
> looked for collisions as well...)

I wrote a silly script[1] that probes the layer index and presents the
user with a list of MACHINES. The user chooses and MACHINE and, based on
the dependencies of the BSP layer defining that machine, the script
pulls in all the required layers and updates the conf/bblayer.conf file.
So basically the user just picks a MACHINE and the script does the rest
so all the user then has to do is type "bitbake <image>". It was just a
silly little proof of concept. It's not perfect, but it does work for me
and I do use it all the time. Of course, it makes assumptions with which
others might not agree ;-) ndec tried it and said it didn't work for
him; yymv. The point is the data is out there (in the layer index) and
it's not too hard to just choose a machine and let the computer pull the
layers and update your config. The thing is... IMHO the layers are
_almost_ a foreign part of the entire build process. IMHO they're
_almost_ like a second-class citizen.

I'm not trying to complain.

But it's not just layers, the whole process of setting up your
configuration is a bit of a mess! I've tried floating the idea (maybe it
was at ELCE?) that maybe the configuration files should be more unified?
Wouldn't it be great if I could give you one configuration file and with
it you could type "bitbake <image>" and it would do all the work of
pulling in the layers, the layer dependencies, maybe even specify
specific checkouts of those repositories, it would specify all the bits
you need, and then build your image? In many cases builds only succeed
when specific checkouts of specific layer repositories are used with
specific configuration incantations in specific configuration files.
It'd be nice to be able to specify all the things you need to re-create
my build in one config file.

It seems awkward that I can checkout the yocto layer and build
core-image-x11 as-is, but if I want to build core-image-wayland then I
have to edit conf/local.conf and rejigger a bunch of configuration
parameters before it'll work. If specific DISTRO_FEATURES are required
for an image to build, they should be in the image configuration file,
no? The build shouldn't rely on me correctly adjusting my local.conf to
make it work?

If I perform a build today and want to save <something> so that I can
have some hope of being able to recreate that build at some point in the
future I have to save: auto.conf, local.conf, bblayers.conf, then, for
each layer, I have to record what the HEAD was for its repository as
well as where I got every layer from (there are several github layers,
for example, with the same name).

:-)

The arguments against this panacea ;-) revolve around the need to keep
the build system as flexible as possible. It is argued that each part of
the build process should be independent and therefore be independently
configurable.

Circling back to your email, a layer manifest for a BSP should specify
all layer dependencies, specify where to find those layers (and maybe
even suggest which branches/checkouts to use?), in such a way that the
build could use it automatically without expecting the user to find,
checkout, and update bblayers.conf manually.

Maybe this discussion would be better on oe-architecture?















[1] https://github.com/twoerner/oe-layerindex-config


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-01-07  1:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CAK18fxF5d+7JecsEHM=wGWGfzeyZPTVKbLbfygNqNoEcjnce0A@mail.gmail.com>
2016-01-06 20:41 ` Layer manifest (topic touched at ELCE) Andrei Gherzan
2016-01-06 22:42   ` Mark Hatle
2016-01-07  1:43     ` Trevor Woerner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.