RTEMS examples build failed
Sebastian Huber
sebastian.huber at embedded-brains.de
Mon Apr 20 18:03:05 UTC 2020
On 20/04/2020 19:58, Joel Sherrill wrote:
>
>
> On Mon, Apr 20, 2020 at 12:20 PM Sebastian Huber
> <sebastian.huber at embedded-brains.de
> <mailto:sebastian.huber at embedded-brains.de>> wrote:
>
> On 20/04/2020 19:04, Vijay Kumar Banerjee wrote:
>
> > On Sun, Apr 19, 2020 at 8:16 PM Sebastian Huber
> > <sebastian.huber at embedded-brains.de
> <mailto:sebastian.huber at embedded-brains.de>
> > <mailto:sebastian.huber at embedded-brains.de
> <mailto:sebastian.huber at embedded-brains.de>>> wrote:
> >
> > On 19/04/2020 15:38, Gedare Bloom wrote:
> >
> >> On Sun, Apr 19, 2020 at 3:52 AM Vijay Kumar
> Banerjee<vijay at rtems.org <mailto:vijay at rtems.org>>
> <mailto:vijay at rtems.org <mailto:vijay at rtems.org>> wrote:
> >>> Hi,
> >>>
> >>> While trying to build the examples with a fresh pull from
> upstream,
> >>> I got the following build error from gccdeps:
> >>>
> >>> ```
> >>> Build failed
> >>> Traceback (most recent call last):
> >>> File
> "//home/lunatic/development/rtems-examples//.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Task.py",
> line 190, in process
> >>> self.post_run()
> >>> File
> "/home/lunatic/development/rtems-examples/rtems_waf/gccdeps.py",
> line 144, in post_run
> >>> raise ValueError('could not find %r for %r' % (x, self))
> >>> ValueError: could not find ['filesystem', 'fat_ramdisk',
> 'fs-root-tar.h'] for
> >> It's doing an error check to find the build dependency
> fs-root-tar.h,
> >> which gets generated in the build directory by bin2c. This
> has always
> >> been tricky to handle in waf. I don't grok the way Chris
> reworked the
> >> rootfs support in the example so I don't immediately see
> the root
> >> (hah) problem or how to try to fix it.
> >
> >
> > Hi,
> >
> > I figured out that the tar is generating properly but the error
> check
> > is failing
> > because it's looking for the fs-root-tar.h file in the source file
> > directory but the
> > header file is being generated in the build directory.
> >
> > Just manually copying the header file to the source directory
> makes it
> > happy
> > and the build works fine. Do we want to generate the header file in
> > the source
> > directory as well and maybe add it in gitignore?
> >
> > The other approach can be to tell gccdeps to check for the files in
> > the build
> > directory instead. I did it with a workaround like the
> following, and
> > it works fine:
> > ```
> > diff --git a/gccdeps.py b/gccdeps.py
> > index bfabe72..61d9bfd 100644
> > --- a/gccdeps.py
> > +++ b/gccdeps.py
> > @@ -141,7 +141,10 @@ def post_run(self):
> > node = path_to_node(path, x, cached_nodes)
> >
> > if not node:
> > - raise ValueError('could not find %r for
> %r' %
> > (x, self))
> > + x =
> > os.path.relpath(str(bld.bldnode)).split('/') + x
> > + node = path_to_node(path, x, cached_nodes)
> > + if not node:
> > + raise ValueError('could not find %r for
> > %r' % (x, self))
> > if id(node) == id(self.inputs[0]):
> > # ignore the source file, it is already
> in the
> > dependencies
> > # this way, successful config tests may be
> > retrieved from the cache
> > ```
> >
> > If it doesn't look too hackish, then I'll post a patch. This
> shouldn't
> > break anything else
> > and I'll surely add comments there about the use case of taking
> this
> > approach.
> >
> > Does it look right?
> I encountered the same error while writing the new build system. I
> think
> this issue can be fixed with a proper dependency chain in waf.
> Patching
> the generic gccdeps.py is not the way to go if you ask me.
>
>
> You could alternatively copy the rootfs base files to the build
> directory and
> do the tar from there. Source directory stays clean.
We don't have to reinvent the wheel. We could copy the wscript of the
new build system to the examples and add a couple of specification
items. Building test programs is really not that much different to
building applications.
More information about the devel
mailing list