On Fri, 21 Apr 2023 at 22:47, Petr Kubizňák - 2N <kubiz...@2n.com> wrote:
>
> > kernel-devicetree.bbclass does the same translation dtb->dts
>
> I mean dts->dtb, of course. The point is dtb's are expected on the input.
>
> Petr
>
> ________________________________________
> From: Petr Kubizňák - 2N <kubiz...@2n.com>
> Sent: Friday, April 21, 2023 2:30 PM
> To: Nathan Rossi
> Cc: openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core][PATCH v2] devicetree.bbclass: Allow selection of dts 
> files to build
>
> Hi Nathan,
>
> Thank you for great suggestions. All of them are valid and I will update the 
> patch once we discuss the .dtb -> .dts mapping.
>
> > I am also curious why you need to handle this mapping of .dtb -> .dts.
> > Do you have an example recipe that is using this class in this way?
> > Because the ".dtb" in KERNEL_DEVICETREE is specifically because the
> > KERNEL_DEVICETREE variable is pointing at kernel makefile targets.
>
> I don't have an example of a particular recipe, but how about 
> EXTERNAL_KERNEL_DEVICETREE variable, used in kernel-fitimage.bbclass? Albeit 
> I don't use this variable in my recipes, I believe it could be used for both 
> classes now with simple assignment DT_FILES = EXTERNAL_KERNEL_DEVICETREE.
>
> And if for whatever reason someone uses a custom variable (like me), they 
> would still expect dtb's rather than dts's. I didn't find any example of 
> using lists of dts files. Contrary, kernel-devicetree.bbclass does the same 
> translation dtb->dts and it even warns about dts being provided (see 
> normalize_dtb()). I didn't want to be that strict here (if someone has a list 
> of dts files, while not to use it directly) but in general, I expect a list 
> of dtb files will be much more common.

So just trying to make the DT_FILES somewhat consistent with the
KERNEL_DEVICETREE, seems fine. I was only curious in case you had some
special path handling that might be better solved by overriding the
devicetree_do_compile and calling the associated compile functions
directly.

The v3 patch looks good :).

Thanks,
Nathan


>
> Kind Regards,
> Petr
>
> ________________________________________
> From: Nathan Rossi <nat...@nathanrossi.com>
> Sent: Friday, April 21, 2023 1:44 PM
> To: Petr Kubizňák - 2N
> Cc: openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core][PATCH v2] devicetree.bbclass: Allow selection of dts 
> files to build
>
> On Fri, 21 Apr 2023 at 18:41, Petr Kubizňák <kubiz...@2n.com> wrote:
> >
> > Add DT_FILES variable to allow the user of the class to select specific
> > dts files to build. This is useful for packages featuring dts files
> > for multiple machines.
> >
> > Since many machine configs contain a list of dtb files
> > (e.g. KERNEL_DEVICETREE), DT_FILES works with both dts and dtb files.
> >
> > Signed-off-by: Petr Kubizňák <kubiz...@2n.com>
> > ---
> >  meta/classes-recipe/devicetree.bbclass | 10 +++++++++-
> >  1 file changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/meta/classes-recipe/devicetree.bbclass 
> > b/meta/classes-recipe/devicetree.bbclass
> > index ed2a92e447..8f348f1370 100644
> > --- a/meta/classes-recipe/devicetree.bbclass
> > +++ b/meta/classes-recipe/devicetree.bbclass
> > @@ -53,8 +53,10 @@ KERNEL_INCLUDE ??= " \
> >
> >  DT_INCLUDE[doc] = "Search paths to be made available to both the device 
> > tree compiler and preprocessor for inclusion."
> >  DT_INCLUDE ?= "${DT_FILES_PATH} ${KERNEL_INCLUDE}"
> > -DT_FILES_PATH[doc] = "Defaults to source directory, can be used to select 
> > dts files that are not in source (e.g. generated)."
> > +DT_FILES_PATH[doc] = "Path to the directory containing dts files to build. 
> > Defaults to source directory."
> >  DT_FILES_PATH ?= "${S}"
> > +DT_FILES[doc] = "Space-separated list of dts or dtb files to build. If 
> > empty, all dts files are built."
>
> Worth noting in the doc string that DT_FILES paths are relative to
> DT_FILES_PATH.
>
> > +DT_FILES ?= ""
> >
> >  DT_PADDING_SIZE[doc] = "Size of padding on the device tree blob, used as 
> > extra space typically for additional properties during boot."
> >  DT_PADDING_SIZE ??= "0x3000"
> > @@ -125,7 +127,10 @@ def devicetree_compile(dtspath, includes, d):
> >      subprocess.run(dtcargs, check = True, stdout=subprocess.PIPE, 
> > stderr=subprocess.STDOUT)
> >
> >  python devicetree_do_compile() {
> > +    import re
> >      includes = expand_includes("DT_INCLUDE", d)
> > +    dtfiles = d.getVar("DT_FILES")
>
> If this populates the variable dtfiles with DT_FILES already split it
> can fall back to os.listdir if empty, this avoids the need for the "if
> filter..." logic within the loop:
>
> dtfiles = d.getVar("DT_FILES").split()
> dtfiles = [<renaming for dtb> for dtfiles in dtfiles]
> for dts in dtfiles or os.listdir(listpath):
>
> > +    filter = [ re.sub("dtbo?", "dts", dtfile) for dtfile in 
> > dtfiles.split() ]
>
> This regex is a bit problematic, it will substitute any part of the
> filename and not just the extension suffix. E.g. "test-dtbo.dts" ->
> "test-dts.dts". The expression might need to be something similar to
> "\.dtbo?$".
>
> I am also curious why you need to handle this mapping of .dtb -> .dts.
> Do you have an example recipe that is using this class in this way?
> Because the ".dtb" in KERNEL_DEVICETREE is specifically because the
> KERNEL_DEVICETREE variable is pointing at kernel makefile targets.
>
> Regards,
> Nathan
>
> >      listpath = d.getVar("DT_FILES_PATH")
> >      for dts in os.listdir(listpath):
> >          dtspath = os.path.join(listpath, dts)
> > @@ -134,6 +139,9 @@ python devicetree_do_compile() {
> >                  continue # skip non-.dts files and non-overlay files
> >          except:
> >              continue # skip if can't determine if overlay
> > +        if filter:
> > +            if not(dts in filter):
> > +                continue # skip if dts not in defined filter
> >          devicetree_compile(dtspath, includes, d)
> >  }
> >
> > --
> > 2.30.2
> >
> >
> > 
> >
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#180300): 
https://lists.openembedded.org/g/openembedded-core/message/180300
Mute This Topic: https://lists.openembedded.org/mt/98406619/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to