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

Chris Johns chrisj at rtems.org
Tue Apr 6 20:23:39 UTC 2021



> 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. 

Chris


More information about the devel mailing list