[PATCH rtems-net-legacy] nfsclient: Build nfsclient from the top level netlegacy script

Gedare Bloom gedare at rtems.org
Tue Apr 6 23:32:51 UTC 2021


On Tue, Apr 6, 2021 at 4:26 PM Chris Johns <chrisj at rtems.org> wrote:
>
> On 7/4/21 7:40 am, Gedare Bloom wrote:
> > On Tue, Apr 6, 2021 at 2:24 PM Chris Johns <chrisj at rtems.org> wrote:
> >>
> >>
> >>
> >>> On 4 Apr 2021, at 11:06 am, Vijay Kumar Banerjee <vijay at rtems.org> wrote:
> >>>
> >>> ---
> >>> netlegacy.py      | 18 +++++++++++++++++-
> >>> nfsclient/wscript |  1 +
> >>> wscript           |  2 +-
> >>> 3 files changed, 19 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/netlegacy.py b/netlegacy.py
> >>> index 89176e6..f470da2 100644
> >>> --- a/netlegacy.py
> >>> +++ b/netlegacy.py
> >>> @@ -55,6 +55,13 @@ def build(bld):
> >>>                    for s in os.listdir('./pppd') if s[-2:] == '.c']
> >>>     telnetd_source = [os.path.join('./telnetd', s)
> >>>                       for s in os.listdir('telnetd') if s[-2:] == '.c']
> >>> +    nfs_source = []
> >>> +    for root, dirs, files in os.walk('./nfsclient'):
> >>
> >> The `./` seems wrong to me. It may work on Windows if the path parsing can handle / and \.
> >>
> >>> +        for name in files:
> >>> +            ext = os.path.splitext(name)[1]
> >>> +            if ext == '.c':
> >>> +                src_root = os.path.split(root)[1]
> >>> +                nfs_source.append(os.path.join('./nfsclient', src_root, name))
> >>
> >> And here where join() handles the separator but you have one embedded in the path.
> >>
> >>>
> >>>     bsp_dirs, bsp_sources = bsp_drivers.bsp_files(bld)
> >>>
> >>> @@ -67,6 +74,7 @@ def build(bld):
> >>>                          './bsps/include'])
> >>>     arch_lib_path = rtems.arch_bsp_lib_path(bld.env.RTEMS_VERSION,
> >>>                                             bld.env.RTEMS_ARCH_BSP)
> >>> +    lib_path = os.path.join(bld.env.PREFIX, arch_lib_path)
> >>>     include_path.append(os.path.relpath(os.path.join(bld.env.PREFIX,
> >>>                                                      arch_lib_path)))
> >>>     include_path.append(os.path.relpath(os.path.join(bld.env.PREFIX,
> >>> @@ -74,6 +82,8 @@ def build(bld):
> >>>                                                      'include')))
> >>>     include_path.append('./bsps/include/libchip')
> >>
> >> Oh and here!
> >>
> >>>
> >>> +    bld.read_stlib('rtemsbsp', paths=[lib_path])
> >>> +
> >>>     if bsp in bsp_dirs:
> >>>         include_path.extend(bsp_dirs[bsp])
> >>>
> >>> @@ -108,8 +118,14 @@ def build(bld):
> >>>               use='networking',
> >>>               source=telnetd_source)
> >>>
> >>> +    bld.stlib(target='nfs',
> >>> +              features='c',
> >>> +              includes=ip,
> >>> +              use=['rtemsbsp', 'networking'],
> >>> +              source=nfs_source)
> >>> +
> >>>     bld.install_files(os.path.join('${PREFIX}', arch_lib_path),
> >>> -                      ["libnetworking.a", 'libpppd.a', 'libtelnetd.a'])
> >>> +                      ["libnetworking.a", 'libpppd.a', 'libtelnetd.a', 'libnfs.a'])
> >>>     bld.install_files(os.path.join('${PREFIX}', arch_lib_path,
> >>>                                    'include', 'libchip'),
> >>>                       [os.path.join('./bsps/include/libchip/', f)
> >>
> >> You may need a wrapper or something else ...
> >>
> >> I think we touched on this once before when I suggested the waf Node support (I think?). This is a hole you can end up heading down when you manage paths explicitly. I suggest you step back and decide on a way to handle this for all platforms.
> >>
> > Yes, thanks. I asked him to test on Windows, but he's getting bit the
> > gdb tool won't build. We'll need to get this all sorted out before
> > release hits...
>
> Ah yes that makes things harder. I have sort of had a look at that problem but I
> have been busy with other things. I think we need to look at moving RTEMS to
> release GDB versions. I was hoping Sebastian could let us know why we are using
> git hashes.
>
> That aside I think embedding `/` in paths explicitly is problematic so testing
> may only indicate it works in some cases and on Windows there are a lot more way
> to run waf than Unix.
>
Yes. I think sometimes the "/" gets converted automatically to "\" but
we should not be relying on this. I noticed there is one such "/" in
rtems-libbsd/wscript and several are in the rtems.git/wscript that
should likely be made more path/OS shell agnostic.

> Chris


More information about the devel mailing list