On Wed, Apr 20, 2022 at 3:29 PM Russ Dill <russ.d...@nikolamotor.com> wrote:

> On Wed, Apr 20, 2022 at 12:09 PM Bruce Ashfield
> <bruce.ashfi...@gmail.com> wrote:
> >
> > On Wed, Apr 20, 2022 at 2:44 PM Russ Dill <russ.d...@nikolamotor.com>
> wrote:
> > >
> > > On Wed, Apr 20, 2022 at 10:19 AM Bruce Ashfield
> > > <bruce.ashfi...@gmail.com> wrote:
> > > >
> > > > On Wed, Apr 20, 2022 at 12:38 PM Russ Dill <
> russ.d...@nikolamotor.com> wrote:
> > > > >
> > > > > On Wed, Apr 20, 2022 at 9:32 AM Bruce Ashfield <
> bruce.ashfi...@gmail.com> wrote:
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Wed, Apr 20, 2022 at 12:28 PM Russ Dill <
> russ.d...@nikolamotor.com> wrote:
> > > > > >>
> > > > > >> do_kernel_configcheck utilizes pathnames relative to the
> sourcedir
> > > > > >> but does not specify ${S} in [dirs]. tasks that do not specify
> > > > > >> [dirs] default to the cwd of the bitbake parent process. This
> can be
> > > > > >> seen by inspection of exec_func/exec_func_python of
> > > > > >> bitbake/lib/bb/build.py or by placing a "print('CWD',
> os.getcwd())"
> > > > > >> at the head of do_kernel_configcheck.
> > > > > >>
> > > > > >> This is problematic if bitbake is run from a directory that
> > > > > >> contains a meta/ subdirectory. In this case the code:
> > > > > >>
> > > > > >>     kmeta = d.getVar("KMETA") or "meta"
> > > > > >>     if not os.path.exists(kmeta):
> > > > > >>         kmeta = subprocess.check_output(['kgit', '--meta'],
> cwd=d.getVar('S')).decode('utf-8').rstrip()
> > > > > >>
> > > > > >> Causes kmeta to be set to just "meta" if a meta directory exists
> > > > > >> in the cwd of the bitbake parent process, or to the output of
> > > > > >
> > > > > >
> > > > > > That isn't actually a problem, and is the design intent of that
> check. It allows a temporary/local override of the meta data, simply by
> creating a 'meta' subdir.
> > > > > >
> > > > >
> > > > > It's not working as intended though. While the check for the "meta"
> > > > > path is done in the cwd of the bitbake parent process, the actual
> > > > > usage of it is done in ${S}:
> > > >
> > > > It hasn't been used in quite some time, but the design intent is what
> > > > I stated. So it would be better to make that later reference more
> > > > flexible.
> > > >
> > > > You have described the problem, but not how you've managed to
> trigger the error.
> > >
> > > It's pretty straightforward. The default yocto steps create a
> > > directory tree that contains a directory called meta (along with
> > > meta-poky, meta-selftest, build, bitbake, etc). If you run bitbake
> > > from this top-level directory and have a kernel image with a kconfig
> > > issue, it will trigger the error. The kmeta var will be set to meta,
> > > and since that directory exists within the cwd of bitbake's parent
> > > process (the yocto tree) the kgit command will not be executed. When
> > > the various steps define outfile, they use:
> >
> > I'm aware of how the basics work :) I've run more builds than I'd like
> > to admit in a very similar configuration, with many more kernel
> configuration
> > issues than most .. and I've never triggered this particular issue.
>
> Just trying to short-cut any further ping-ponging by providing an over
> abundance of detail.
>
> > So you aren't actually running from a "build" directory/subdirectory ?
> > But instead are running it directly from your poky clone ? That's a
> > not a common directory layout at all.
>
> The build sub-directory still exists, but because sourcing
> oe-init-build-env sets BUILDDIR and BBPATH, I typically just run the
> bitbake commands from wherever I happen to be working. This is the
> first time it's caused me any issues.
>
>
A fairly unique workflow (since no one else has seen this), but
obviously supported! So all good on that front.



> > >
> > >  "{}/{}/cfg/invalid.txt".format(s,kmeta)
> > >
> > > This directory is not a subdirectory of the directory that bitbake was
> > > run from, but within the kernel source since it contains the 's'.
> > > Rather than attempting to utilize $PWD/meta/cfg, $S/meta/cfg/ is
> > > utilized. Unless the path meta/cfg exists within the kernel source,
> > > creating outfile fails.
> > >
> > > As far as fixing it while keeping the design intent in check, was the
> > > intent for the meta directory to exist within the cwd of the bitbake
> > > parent process? Or within the kernel source tree? Keying off the meta
> > > directory in the cwd of the bitbake process is confusing behaviour,
> > > especially since that directory name is already used for a different
> > > purpose at the top-level.
> >
> > It could be either. Sometimes in the kernel directory, sometimes not.
> > I've done development with local kernel meta directories in both
> locations
> > throughout the years.
> >
> > But the intention is that it commonly is in the kernel source tree, so
> > the forcing of the 'dir' isn't fundamentally wrong .. just that most of
> > the paths really should have been fully specified (and have been
> > throughout various iterations), so it also shouldn't matter.
> >
> > All of the linux-yocto recipes set KMETA, so you must also be running
> > without specifying the name of the kernel meta data, which
> > is also part of the corner case.  Since KMETA is now fully specified
> > in the reference kernels (it wasn't always), the right thing to do is
> > probably to drop the check for 'meta' entirely and just use the
> > variable with a fallback to the kernel tools returned location/directory.
>
> This appears to be the primary issue and the easiest fix for me
> locally. Freescale's linux-imx.inc and recipes that include it don't
> set KMETA.
>
> > The kernel-tools and the 'meta' directory naming pre-date the
> > integration with oe-core/yocto, hence the namespace collision. We
> > can clean that up a bit by dropping the hardcoded name check, and
> > see if anything was still relying on it (through an issue on integration
> > testing, or a bug report).
>
> If it save you time, I can sum things up a bit and provide a patch for
> either dropping the hardcoding entirely, changing the reference to
> "{}/meta".format(os.getcwd()), or "{}/meta".format(s) (along with
> moving s = d.getVar('S') up a bit)
>

I'd prefer to move towards simplification, and drop the hardcoded
meta directory check.

Likewise, I can also run some extra checks by doing a local patch
for it, but since you are already in the midst of seeing the issue,
I'd say send a new patch and I can watch for any issues.

Bruce



>
> > Bruce
> >
> > >
> > > > >
> > > > >     if analysis:
> > > > >         outfile = "{}/{}/cfg/invalid.txt".format(s,kmeta)
> > > > >
> > > > > Which leads to:
> > > > >
> > > > > DEBUG: Executing python function do_kernel_configcheck
> > > > > ERROR: Error executing a python function in exec_func_python()
> autogenerated:
> > > > >
> > > > > The stack trace of python calls that resulted in this
> exception/failure was:
> > > > > File: 'exec_func_python() autogenerated', lineno: 2, function:
> <module>
> > > > >      0001:
> > > > >  *** 0002:do_kernel_configcheck(d)
> > > > >      0003:
> > > > > File:
> '/home/[USER]/[SRC-PATH]/build/../meta/classes/kernel-yocto.bbclass',
> > > > > lineno: 591, function: do_kernel_configcheck
> > > > >      0587:    if analysis:
> > > > >      0588:        outfile = "{}/{}/cfg/invalid.txt".format(s,kmeta)
> > > > >      0589:        if os.path.isfile(outfile):
> > > > >      0590:           os.remove(outfile)
> > > > >  *** 0591:        with open(outfile, 'w+') as f:
> > > > >      0592:            f.write( analysis )
> > > > >      0593:
> > > > >      0594:        if bsp_check_visibility and
> os.stat(outfile).st_size > 0:
> > > > >      0595:            with open (outfile, "r") as myfile:
> > > > > Exception: FileNotFoundError: [Errno 2] No such file or directory:
> > > > >
> '[YOCTO-TMP-PATH]/work/[MACHINE]/[PN]/[PV]/git/meta/cfg/invalid.txt'
> > > > >
> > > > >
> > > > >
> > > > > >
> > > > > > Bruce
> > > > > >
> > > > > >
> > > > > >>
> > > > > >> kgit --meta if it does not.
> > > > > >>
> > > > > >> Signed-off-by: Russ Dill <russ.d...@nikolamotor.com>
> > > > > >> ---
> > > > > >>  meta/classes/kernel-yocto.bbclass | 1 +
> > > > > >>  1 file changed, 1 insertion(+)
> > > > > >>
> > > > > >> diff --git a/meta/classes/kernel-yocto.bbclass
> b/meta/classes/kernel-yocto.bbclass
> > > > > >> index 1d5a8cdf29..c787b2a122 100644
> > > > > >> --- a/meta/classes/kernel-yocto.bbclass
> > > > > >> +++ b/meta/classes/kernel-yocto.bbclass
> > > > > >> @@ -620,6 +620,7 @@ python do_kernel_configcheck() {
> > > > > >>      if warnings_detected and kmeta_audit_werror:
> > > > > >>          bb.fatal( "configuration warnings detected, werror is
> set, promoting to fatal" )
> > > > > >>  }
> > > > > >> +do_kernel_configcheck[dirs] = "${S}"
> > > > > >>
> > > > > >>  # Ensure that the branches (BSP and meta) are on the locations
> specified by
> > > > > >>  # their SRCREV values. If they are NOT on the right commits,
> the branches
> > > > > >> --
> > > > > >> 2.25.1
> > > > > >>
> > > > > >
> > > > > >
> > > > > > --
> > > > > > - Thou shalt not follow the NULL pointer, for chaos and madness
> await thee at its end
> > > > > > - "Use the force Harry" - Gandalf, Star Trek II
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > >
> > > > >
> > > > > Russ Dill
> > > > >
> > > > > russ.d...@nikolamotor.com
> > > > >
> > > > > NIKOLA CORPORATION | nikolamotor.com
> > > > > 4141 E Broadway Rd | Phoenix | AZ | 85040
> > > > >
> > > > >
> > > > >
> > > > > INFORMATION CONTAINED IN THIS E-MAIL TRANSMISSION IS CONFIDENTIAL.
> IF
> > > > > YOU ARE NOT THE INTENDED RECIPIENT, DO NOT READ, DISTRIBUTE OR
> > > > > REPRODUCE THIS TRANSMISSION (INCLUDING ANY ATTACHMENTS). IF YOU
> HAVE
> > > > > RECEIVED THIS E-MAIL IN ERROR, PLEASE NOTIFY THE SENDER BY E-MAIL
> > > > > REPLY AND THEN DELETE THIS E-MAIL.
> > > >
> > > >
> > > >
> > > > --
> > > > - Thou shalt not follow the NULL pointer, for chaos and madness await
> > > > thee at its end
> > > > - "Use the force Harry" - Gandalf, Star Trek II
> > >
> > >
> > >
> > > --
> > >
> > >
> > >
> > > Russ Dill
> > >
> > > russ.d...@nikolamotor.com
> > >
> > > NIKOLA CORPORATION | nikolamotor.com
> > > 4141 E Broadway Rd | Phoenix | AZ | 85040
> > >
> > >
> > >
> > > INFORMATION CONTAINED IN THIS E-MAIL TRANSMISSION IS CONFIDENTIAL. IF
> > > YOU ARE NOT THE INTENDED RECIPIENT, DO NOT READ, DISTRIBUTE OR
> > > REPRODUCE THIS TRANSMISSION (INCLUDING ANY ATTACHMENTS). IF YOU HAVE
> > > RECEIVED THIS E-MAIL IN ERROR, PLEASE NOTIFY THE SENDER BY E-MAIL
> > > REPLY AND THEN DELETE THIS E-MAIL.
> >
> >
> >
> > --
> > - Thou shalt not follow the NULL pointer, for chaos and madness await
> > thee at its end
> > - "Use the force Harry" - Gandalf, Star Trek II
> >
> > 
> >
>
>
> --
>
>
>
> Russ Dill
>
> russ.d...@nikolamotor.com
>
> NIKOLA CORPORATION | nikolamotor.com
> 4141 E Broadway Rd | Phoenix | AZ | 85040
>
>
>
> INFORMATION CONTAINED IN THIS E-MAIL TRANSMISSION IS CONFIDENTIAL. IF
> YOU ARE NOT THE INTENDED RECIPIENT, DO NOT READ, DISTRIBUTE OR
> REPRODUCE THIS TRANSMISSION (INCLUDING ANY ATTACHMENTS). IF YOU HAVE
> RECEIVED THIS E-MAIL IN ERROR, PLEASE NOTIFY THE SENDER BY E-MAIL
> REPLY AND THEN DELETE THIS E-MAIL.
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end
- "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#164724): 
https://lists.openembedded.org/g/openembedded-core/message/164724
Mute This Topic: https://lists.openembedded.org/mt/90587617/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