[poky] Strange file names

Tom Zanussi tom.zanussi at intel.com
Thu Mar 29 09:22:25 PDT 2012


On Thu, 2012-03-29 at 18:02 +0200, Detlev Zundel wrote:
> Hi Tom,
> 
> thanks for listening to my concerns.  I have to admit though, that I
> wrote my mail because of my doubts about the usage of such unusal
> filenames, but I have yet to understand how you use the constructs.
> 
> > Yes, I think it would make sense for various reasons to get rid of it if
> > possible - it's not central to the mechanism, just convenient.
> >
> > So the current uses of it are the following:
> >
> > - having a particular filename match the machine name:
> >  
> >     ./powerpc/conf/machine/{{=machine}}.conf
> 
> Can you explain to me what this exactly does?  Does that file match
> every machine name?  If that is the case, then why do you need to match
> at all and not use a special file name?
> 

I guess 'match' is the wrong word - basically what happens when
processing the templates (and since the filenames themselves are part of
the 'templates', those too), the {{=machine}} in the name is replaced
with the name of the BSP.  So in the final set of files, supposing
you're creating a bsp named 'meta-foo', you end up with this file being
named:

./powerpc/conf/machine/foo.conf

which is what's expected in the BSP layout.

> > - having a particular filename conditionally included or not:
> >
> >     ./i386/recipes-kernel/linux/{{ if kernel_choice ==
> > "linux-yocto_3.2": }} linux-yocto_3.2.bbappend
> >
> > For those two types of cases, I think it should be possible to move that
> > logic into the file itself using special filename and/or conditional
> > filename directives.
> 
> I'm not sure if I understand fully, but something like (shell-syntax)
> "include ${kernel_choice}.bbappend" would work - modulo ignoring errors
> if the file is not found of course.
> 

So, similarly in this case, we have four files with similar names in
this dir, but only one of them should be used, and which one depends on
which kernel was selected.  The 'template processing' uses the code in
the filename to end up with that result.  So your suggestion is partly
fine in that we need some kind of 'include' to replace it, but it
doesn't contain the logic we need to choose only that file.  And it's
just replacing it with something that looks like executable code anyway.
But as I mentioned, I think this case also could me moved into the file
itself.

> > The other usage is to have directory names match the machine name for
> > instance:
> >
> >  ./i386/recipes-graphics/xorg-xserver/xserver-xf86-config/{{=machine}}/{{ if xserver_choice == "xserver_vesa": }} xorg.conf
> 
> I fail to understand this for the same reason than the first item ;)
> 

This is actually a combination of the other two, replace the {{= with
'machine' but here it's a dirname, and conditionally select one of a set
of files.

Again, in this case, for the file in this case, we can move the
selection logic into the file, but for the dirname replacement we need
another place to contain it, which we can use the
aforementioned .noinstall files for, barring a better idea...

Tom

> Cheers
>   Detlev
> 
> --
> DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de





More information about the poky mailing list