[RFC] rcu: build on Windows

Message ID 20201019233336.9627-1-dharmik.thakkar@arm.com (mailing list archive)
State Superseded, archived
Delegated to: David Marchand
Headers
Series [RFC] rcu: build on Windows |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation fail Compilation issues

Commit Message

Dharmik Thakkar Oct. 19, 2020, 11:33 p.m. UTC
  Build the lib for Windows.

Change-Id: Ib83431a9ee56a7b38445f0474cb9a12b17cf18f9
Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
---
 lib/meson.build | 1 +
 1 file changed, 1 insertion(+)
  

Comments

David Marchand Oct. 20, 2020, 8:13 a.m. UTC | #1
On Tue, Oct 20, 2020 at 1:34 AM Dharmik Thakkar <dharmik.thakkar@arm.com> wrote:
>
> Build the lib for Windows.
>
> Change-Id: Ib83431a9ee56a7b38445f0474cb9a12b17cf18f9
> Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
> ---
>  lib/meson.build | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/lib/meson.build b/lib/meson.build
> index dd55b5cb53e4..1bb019720c6a 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -41,6 +41,7 @@ if is_windows
>                 'telemetry',
>                 'eal',
>                 'ring',
> +               'rcu',
>                 'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci',
>                 'cmdline',
>                 'hash',
> --
> 2.17.1
>

If we skip the new failures in Intel CI due to kni build being broken,
I see that Windows build is fine but I have no log of it.
UNH lab skipped testing this patch, as it is a RFC (iiuc).
We need more tests, but on the principle, what do you think about enabling rcu?
  
Dmitry Kozlyuk Oct. 20, 2020, 8:34 a.m. UTC | #2
On Tue, 20 Oct 2020 10:13:11 +0200, David Marchand wrote:
> On Tue, Oct 20, 2020 at 1:34 AM Dharmik Thakkar <dharmik.thakkar@arm.com> wrote:
> >
> > Build the lib for Windows.
> >
> > Change-Id: Ib83431a9ee56a7b38445f0474cb9a12b17cf18f9
> > Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
> > ---
> >  lib/meson.build | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/lib/meson.build b/lib/meson.build
> > index dd55b5cb53e4..1bb019720c6a 100644
> > --- a/lib/meson.build
> > +++ b/lib/meson.build
> > @@ -41,6 +41,7 @@ if is_windows
> >                 'telemetry',
> >                 'eal',
> >                 'ring',
> > +               'rcu',
> >                 'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci',
> >                 'cmdline',
> >                 'hash',
> > --
> > 2.17.1
> >  
> 
> If we skip the new failures in Intel CI due to kni build being broken,
> I see that Windows build is fine but I have no log of it.
> UNH lab skipped testing this patch, as it is a RFC (iiuc).
> We need more tests, but on the principle, what do you think about enabling rcu?

Builds OK with Linux/GCC (cross), Windows/MinGW-w64, Windows/clang.

Tested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
  
Dharmik Thakkar Oct. 20, 2020, 12:43 p.m. UTC | #3
> On Oct 20, 2020, at 3:13 AM, David Marchand <david.marchand@redhat.com> wrote:
> 
> On Tue, Oct 20, 2020 at 1:34 AM Dharmik Thakkar <dharmik.thakkar@arm.com> wrote:
>> 
>> Build the lib for Windows.
>> 
>> Change-Id: Ib83431a9ee56a7b38445f0474cb9a12b17cf18f9
>> Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
>> ---
>> lib/meson.build | 1 +
>> 1 file changed, 1 insertion(+)
>> 
>> diff --git a/lib/meson.build b/lib/meson.build
>> index dd55b5cb53e4..1bb019720c6a 100644
>> --- a/lib/meson.build
>> +++ b/lib/meson.build
>> @@ -41,6 +41,7 @@ if is_windows
>>                'telemetry',
>>                'eal',
>>                'ring',
>> +               'rcu',
>>                'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci',
>>                'cmdline',
>>                'hash',
>> --
>> 2.17.1
>> 
> 
> If we skip the new failures in Intel CI due to kni build being broken,
> I see that Windows build is fine but I have no log of it.
> UNH lab skipped testing this patch, as it is a RFC (iiuc).
> We need more tests, but on the principle, what do you think about enabling rcu?
> 

I think it should work OK.

> 
> -- 
> David Marchand
>
  
Dharmik Thakkar Oct. 20, 2020, 12:51 p.m. UTC | #4
> On Oct 20, 2020, at 3:34 AM, Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> wrote:
> 
> On Tue, 20 Oct 2020 10:13:11 +0200, David Marchand wrote:
>> On Tue, Oct 20, 2020 at 1:34 AM Dharmik Thakkar <dharmik.thakkar@arm.com> wrote:
>>> 
>>> Build the lib for Windows.
>>> 
>>> Change-Id: Ib83431a9ee56a7b38445f0474cb9a12b17cf18f9
>>> Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
>>> ---
>>> lib/meson.build | 1 +
>>> 1 file changed, 1 insertion(+)
>>> 
>>> diff --git a/lib/meson.build b/lib/meson.build
>>> index dd55b5cb53e4..1bb019720c6a 100644
>>> --- a/lib/meson.build
>>> +++ b/lib/meson.build
>>> @@ -41,6 +41,7 @@ if is_windows
>>>                'telemetry',
>>>                'eal',
>>>                'ring',
>>> +               'rcu',
>>>                'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci',
>>>                'cmdline',
>>>                'hash',
>>> --
>>> 2.17.1
>>> 
>> 
>> If we skip the new failures in Intel CI due to kni build being broken,
>> I see that Windows build is fine but I have no log of it.
>> UNH lab skipped testing this patch, as it is a RFC (iiuc).
>> We need more tests, but on the principle, what do you think about enabling rcu?
> 
> Builds OK with Linux/GCC (cross), Windows/MinGW-w64, Windows/clang.
> 
> Tested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>

Thank you for testing, Dmitry!

I tried cross-compilation on Linux (Ubuntu 18.04) with MinGW-w64 toolchain, but I am seeing some compilation error:

../lib/librte_eal/common/eal_common_dev.c: In function ‘rte_dev_probe’:
../lib/librte_eal/common/eal_common_dev.c:215:12: error: ‘ENOMSG’ undeclared (first use in this function); did you mean ‘NPMSG’?
    return -ENOMSG;
            ^~~~~~
            NPMSG
../lib/librte_eal/common/eal_common_dev.c:215:12: note: each undeclared identifier is reported only once for each function it appears in
../lib/librte_eal/common/eal_common_dev.c: In function ‘rte_dev_remove’:
../lib/librte_eal/common/eal_common_dev.c:361:12: error: ‘ENOMSG’ undeclared (first use in this function); did you mean ‘NPMSG’?
    return -ENOMSG;
            ^~~~~~
            NPMSG

[52/178] Compiling C object 'lib/lib@@rte_eal@sta/librte_eal_windows_eal_memory.c.obj'.
ninja: build stopped: subcommand failed.


Any help is appreciated.
  
Honnappa Nagarahalli Oct. 20, 2020, 3:40 p.m. UTC | #5
<snip>
> 
> > On Oct 20, 2020, at 3:34 AM, Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> wrote:
> >
> > On Tue, 20 Oct 2020 10:13:11 +0200, David Marchand wrote:
> >> On Tue, Oct 20, 2020 at 1:34 AM Dharmik Thakkar
> <dharmik.thakkar@arm.com> wrote:
> >>>
> >>> Build the lib for Windows.
> >>>
> >>> Change-Id: Ib83431a9ee56a7b38445f0474cb9a12b17cf18f9
> >>> Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
> >>> ---
> >>> lib/meson.build | 1 +
> >>> 1 file changed, 1 insertion(+)
> >>>
> >>> diff --git a/lib/meson.build b/lib/meson.build index
> >>> dd55b5cb53e4..1bb019720c6a 100644
> >>> --- a/lib/meson.build
> >>> +++ b/lib/meson.build
> >>> @@ -41,6 +41,7 @@ if is_windows
> >>>                'telemetry',
> >>>                'eal',
> >>>                'ring',
> >>> +               'rcu',
> >>>                'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci',
> >>>                'cmdline',
> >>>                'hash',
> >>> --
> >>> 2.17.1
> >>>
> >>
> >> If we skip the new failures in Intel CI due to kni build being
> >> broken, I see that Windows build is fine but I have no log of it.
> >> UNH lab skipped testing this patch, as it is a RFC (iiuc).
> >> We need more tests, but on the principle, what do you think about
> enabling rcu?
> >
> > Builds OK with Linux/GCC (cross), Windows/MinGW-w64, Windows/clang.
> >
> > Tested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> 
> Thank you for testing, Dmitry!
> 
> I tried cross-compilation on Linux (Ubuntu 18.04) with MinGW-w64 toolchain,
> but I am seeing some compilation error:
> 
> ../lib/librte_eal/common/eal_common_dev.c: In function ‘rte_dev_probe’:
> ../lib/librte_eal/common/eal_common_dev.c:215:12: error: ‘ENOMSG’
> undeclared (first use in this function); did you mean ‘NPMSG’?
>     return -ENOMSG;
>             ^~~~~~
>             NPMSG
> ../lib/librte_eal/common/eal_common_dev.c:215:12: note: each undeclared
> identifier is reported only once for each function it appears in
> ../lib/librte_eal/common/eal_common_dev.c: In function
> ‘rte_dev_remove’:
> ../lib/librte_eal/common/eal_common_dev.c:361:12: error: ‘ENOMSG’
> undeclared (first use in this function); did you mean ‘NPMSG’?
>     return -ENOMSG;
>             ^~~~~~
>             NPMSG
> 
> [52/178] Compiling C object
> 'lib/lib@@rte_eal@sta/librte_eal_windows_eal_memory.c.obj'.
> ninja: build stopped: subcommand failed.
> 
> 
> Any help is appreciated.
Just to be clear, these errors are not stopping us from moving forward with this patch (as the CI for windows is passing and Dmitry has tested it in his environment).

> 
>
  
Dmitry Kozlyuk Oct. 20, 2020, 3:52 p.m. UTC | #6
On Tue, 20 Oct 2020 12:51:14 +0000, Dharmik Thakkar wrote:
> I tried cross-compilation on Linux (Ubuntu 18.04) with MinGW-w64 toolchain, but I am seeing some compilation error:
> 
> ../lib/librte_eal/common/eal_common_dev.c: In function ‘rte_dev_probe’:
> ../lib/librte_eal/common/eal_common_dev.c:215:12: error: ‘ENOMSG’ undeclared (first use in this function); did you mean ‘NPMSG’?
>     return -ENOMSG;
>             ^~~~~~
>             NPMSG
> ../lib/librte_eal/common/eal_common_dev.c:215:12: note: each undeclared identifier is reported only once for each function it appears in
> ../lib/librte_eal/common/eal_common_dev.c: In function ‘rte_dev_remove’:
> ../lib/librte_eal/common/eal_common_dev.c:361:12: error: ‘ENOMSG’ undeclared (first use in this function); did you mean ‘NPMSG’?
>     return -ENOMSG;
>             ^~~~~~
>             NPMSG
> 
> [52/178] Compiling C object 'lib/lib@@rte_eal@sta/librte_eal_windows_eal_memory.c.obj'.
> ninja: build stopped: subcommand failed.
> 
> 
> Any help is appreciated.

Ubuntu 18.04 has MinGW-w64 5.0.4, while 6.0.0 is required (note: MinGW-w64
version is not the same as GCC version). I've certainly hit this issue with
older MinGW.
  
Dharmik Thakkar Oct. 20, 2020, 4:37 p.m. UTC | #7
> On Oct 20, 2020, at 10:52 AM, Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> wrote:
> 
> On Tue, 20 Oct 2020 12:51:14 +0000, Dharmik Thakkar wrote:
>> I tried cross-compilation on Linux (Ubuntu 18.04) with MinGW-w64 toolchain, but I am seeing some compilation error:
>> 
>> ../lib/librte_eal/common/eal_common_dev.c: In function ‘rte_dev_probe’:
>> ../lib/librte_eal/common/eal_common_dev.c:215:12: error: ‘ENOMSG’ undeclared (first use in this function); did you mean ‘NPMSG’?
>>    return -ENOMSG;
>>            ^~~~~~
>>            NPMSG
>> ../lib/librte_eal/common/eal_common_dev.c:215:12: note: each undeclared identifier is reported only once for each function it appears in
>> ../lib/librte_eal/common/eal_common_dev.c: In function ‘rte_dev_remove’:
>> ../lib/librte_eal/common/eal_common_dev.c:361:12: error: ‘ENOMSG’ undeclared (first use in this function); did you mean ‘NPMSG’?
>>    return -ENOMSG;
>>            ^~~~~~
>>            NPMSG
>> 
>> [52/178] Compiling C object 'lib/lib@@rte_eal@sta/librte_eal_windows_eal_memory.c.obj'.
>> ninja: build stopped: subcommand failed.
>> 
>> 
>> Any help is appreciated.
> 
> Ubuntu 18.04 has MinGW-w64 5.0.4, while 6.0.0 is required (note: MinGW-w64
> version is not the same as GCC version). I've certainly hit this issue with
> older MinGW.

Got it, thank you! FWIW, documentation [1] doesn’t mention about the 6.0.0 requirement

[1] https://doc.dpdk.org/guides/windows_gsg/build_dpdk.html
  
Menon, Ranjit Oct. 20, 2020, 5:15 p.m. UTC | #8
On 10/20/2020 9:37 AM, Dharmik Thakkar wrote:
>
>> On Oct 20, 2020, at 10:52 AM, Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> wrote:
>>
>> On Tue, 20 Oct 2020 12:51:14 +0000, Dharmik Thakkar wrote:
>>> I tried cross-compilation on Linux (Ubuntu 18.04) with MinGW-w64 toolchain, but I am seeing some compilation error:
>>>
>>> ../lib/librte_eal/common/eal_common_dev.c: In function ‘rte_dev_probe’:
>>> ../lib/librte_eal/common/eal_common_dev.c:215:12: error: ‘ENOMSG’ undeclared (first use in this function); did you mean ‘NPMSG’?
>>>     return -ENOMSG;
>>>             ^~~~~~
>>>             NPMSG
>>> ../lib/librte_eal/common/eal_common_dev.c:215:12: note: each undeclared identifier is reported only once for each function it appears in
>>> ../lib/librte_eal/common/eal_common_dev.c: In function ‘rte_dev_remove’:
>>> ../lib/librte_eal/common/eal_common_dev.c:361:12: error: ‘ENOMSG’ undeclared (first use in this function); did you mean ‘NPMSG’?
>>>     return -ENOMSG;
>>>             ^~~~~~
>>>             NPMSG
>>>
>>> [52/178] Compiling C object 'lib/lib@@rte_eal@sta/librte_eal_windows_eal_memory.c.obj'.
>>> ninja: build stopped: subcommand failed.
>>>
>>>
>>> Any help is appreciated.
>> Ubuntu 18.04 has MinGW-w64 5.0.4, while 6.0.0 is required (note: MinGW-w64
>> version is not the same as GCC version). I've certainly hit this issue with
>> older MinGW.
> Got it, thank you! FWIW, documentation [1] doesn’t mention about the 6.0.0 requirement
>
> [1] https://doc.dpdk.org/guides/windows_gsg/build_dpdk.html

While we're at this, we should also update this with the minimum 
required version of the Clang compiler.

ranjit m.
  

Patch

diff --git a/lib/meson.build b/lib/meson.build
index dd55b5cb53e4..1bb019720c6a 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -41,6 +41,7 @@  if is_windows
 		'telemetry',
 		'eal',
 		'ring',
+		'rcu',
 		'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci',
 		'cmdline',
 		'hash',