On Mon, 2023-05-22 at 11:22 -0500, Randolph Sapp wrote:
> On 5/22/23 03:00, Richard Purdie wrote:
> > On Fri, 2023-05-12 at 12:22 -0500, Randolph Sapp via
> > lists.openembedded.org wrote:
> > > From: Randolph Sapp <[email protected]>
> > > 
> > > Upstream's dtb directory structure has no real standard. They just tend
> > > to idle around the 2/3 directory depth. Recursively search for the
> > > dtb/dtbo files instead of assuming anything.
> > > 
> > > Fixes: 04ab57d200 (kernel-devicetree: allow specification of dtb
> > > directory, 2023-05-02)
> > > 
> > > Signed-off-by: Randolph Sapp <[email protected]>
> > > ---
> > >   meta/classes-recipe/kernel-devicetree.bbclass | 21 +++++++++++++------
> > >   1 file changed, 15 insertions(+), 6 deletions(-)
> > > 
> > > diff --git a/meta/classes-recipe/kernel-devicetree.bbclass 
> > > b/meta/classes-recipe/kernel-devicetree.bbclass
> > > index 831fdd1527..fa6de7a140 100644
> > > --- a/meta/classes-recipe/kernel-devicetree.bbclass
> > > +++ b/meta/classes-recipe/kernel-devicetree.bbclass
> > > @@ -12,12 +12,21 @@ python () {
> > >               d.appendVar("PACKAGES", " 
> > > ${KERNEL_PACKAGE_NAME}-image-zimage-bundle")
> > >   }
> > >   
> > > -FILES:${KERNEL_PACKAGE_NAME}-devicetree = " \
> > > -    /${KERNEL_DTBDEST}/*.dtb \
> > > -    /${KERNEL_DTBDEST}/*.dtbo \
> > > -    /${KERNEL_DTBDEST}/*/*.dtb \
> > > -    /${KERNEL_DTBDEST}/*/*.dtbo \
> > > -"
> > > +# recursivly search for devicetree files
> > > +def find_device_trees(d):
> > > +    import glob
> > > +    import os
> > > +
> > > +    file_paths = []
> > > +    dest_dir = d.getVar('D')
> > > +    full_dtb_dir = dest_dir + '/' + d.getVar('KERNEL_DTBDEST')
> > > +
> > > +    for file in glob.glob(full_dtb_dir + '/**/*.dtb*', recursive=True):
> > > +        file_paths.append('/' + os.path.relpath(file, dest_dir))
> > > +
> > > +    return ' '.join(file_paths)
> > > +
> > > +FILES:${KERNEL_PACKAGE_NAME}-devicetree = "${@find_device_trees(d)}"
> > >   FILES:${KERNEL_PACKAGE_NAME}-image-zimage-bundle = 
> > > "/${KERNEL_IMAGEDEST}/zImage-*.dtb.bin"
> > 
> > I suspect this still suffers from a determinism problem as the previous
> > patch did but now it depends on whether the build had occurred or not.
> > 
> > I also really don't like resorting to python functions like this,
> > they're horrible for performance overhead. I did wonder if:
> > 
> > FILES:${KERNEL_PACKAGE_NAME}-devicetree = "/${KERNEL_DTBDEST}/**/*.dtb*"
> > 
> > would work?
> 
> Tried that first. Unfortunately bitbake doesn't enable the recursive 
> option in it's path globs. That would be too easy...

I wonder if we should do something like:

diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py
index edb70daaf17..70040f09e7c 100644
--- a/meta/lib/oe/package.py
+++ b/meta/lib/oe/package.py
@@ -550,7 +550,7 @@ def files_from_filevars(filevars):
             f = '.' + f
         if not f.startswith("./"):
             f = './' + f
-        globbed = glob.glob(f)
+        globbed = glob.glob(f, recursive=True)
         if globbed:
             if [ f ] != globbed:
                 files += globbed

we now have the right minimum python version for that. My main concern
would be potential any performance implications.

> > Also, are there automated tests we should be adding to catch bugs like
> > this?
> 
> Unsure. I haven't looked into automated tests for yocto recipes yet. If 
> you know of some docs for whatever OE-core is doing, feel free to shoot 
> them my way.

oe-selftest -r <test-section-name> 

where you can see the test cases in lib/oeqa/selftest/cases/

but I'm not seeing much for devicetree specifically. We should have
some!

Cheers,

Richard



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#181600): 
https://lists.openembedded.org/g/openembedded-core/message/181600
Mute This Topic: https://lists.openembedded.org/mt/98853893/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to