On 7/26/19 8:52 AM, Numan Siddique wrote:
On Fri, Jul 26, 2019 at 5:51 PM Numan Siddique <[email protected]> wrote:



On Fri, Jul 26, 2019 at 5:19 PM Damijan Skvarc <[email protected]>
wrote:

Dumitru,
your issue was fixed in
https://github.com/openvswitch/ovs/commit/6f6d19db05ca743d6f294618d2c36b6d0b15e2e2
as removed warning. However fix is not merged yet on
https://github.com/ovn-org/ovn.git. Unfortunatelly even merging this fix
to ovn-org/ovn.git will not help, since (saying from memory) by this fix
about 1700 warning were removed while there still remained about 70
warnings of the same kind at different locations. I would suggest for a
while not to consider warnings as errors.


Hi Damijan,

With the OVS/OVN split branch here -
https://github.com/ovn-org/ovn/commits/ovs_ovn_split, your fix is
available -
https://github.com/ovn-org/ovn/blob/ovs_ovn_split/ovs/include/openvswitch/nsh.h#L372

After applying Ilya's patch and manually compiling sparse after reverting
the commit, I am still seeing the below errors

Do you think we can ignore these errors for now ?


Found the issue. The acinclude.m4 file in ovn-org/ovn repo is a bit out of
date. The OVS_ENABLE_SPARSE and other SPARSE related macros needs to be
updated. After fixing it, compilation
was successful.

Thanks
Numan

Hi Numan,

I just attempted this. I did a fresh clone of the ovn repo, checked out the up-to-date ovs_ovn_split branch, and then compiled with --enable-sparse and --enable-Werror.

I see the following errors:

libtool: compile: env REAL_CC=gcc "CHECK=sparse -Wsparse-error -I ./include/sparse -m64 -I /usr/local/include " cgcc -target=x86_64 -target=host_os_specs -D__MMX__=1 -D__SSE2_MATH__=1 -D__SSE_MATH__=1 -D__SSE2__=1 -D__SSE__=1 -DHAVE_CONFIG_H -I. -I ./include -I ./include -I ./lib -I ./lib -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare -Wshift-negative-value -Wduplicated-cond -Wshadow -Werror -Werror -g -O2 -MT lib/rconn.lo -MD -MP -MF lib/.deps/rconn.Tpo -c lib/rconn.c -o lib/rconn.o lib/sat-math.h:46:14: error: undefined identifier '__builtin_saddll_overflow'
lib/sat-math.h:46:39: error: not a function <noident>
lib/sat-math.h:46:39: error: not a function <noident>
lib/sat-math.h:102:14: error: undefined identifier '__builtin_smulll_overflow'
lib/sat-math.h:102:39: error: not a function <noident>
lib/sat-math.h:46:39: error: not a function <noident>
lib/sat-math.h:102:39: error: not a function <noident>
lib/sat-math.h:46:39: error: not a function <noident>
lib/sat-math.h:72:14: error: undefined identifier '__builtin_ssubll_overflow'
lib/sat-math.h:102:39: error: not a function <noident>
lib/sat-math.h:46:39: error: not a function <noident>
lib/sat-math.h:102:39: error: call with no type!
lib/sat-math.h:72:39: error: call with no type!
lib/sat-math.h:46:39: error: call with no type!
make[4]: *** [Makefile:5359: lib/rconn.lo] Error 1

I also see this with the OVS repo. So it likely should be addressed there instead, and it shouldn't delay our work of splitting the OVN code out.



Thank
Numan

*******
  -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers
-fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses
-Wsizeof-array-argument -Wbool-compare -Wshift-negative-value
-Wduplicated-cond -Wshadow -Wmultistatement-macros -Wcast-align=strict
-Werror -Werror   -g -O2 -MT lib/acl-log.lo -MD -MP -MF $depbase.Tpo -c -o
lib/acl-log.lo ../lib/acl-log.c &&\
mv -f $depbase.Tpo $depbase.Plo
../ovs/lib/util.h:449:12: error: incorrect type in return expression
(different base types)
../ovs/lib/util.h:449:12:    expected restricted ovs_be32
../ovs/lib/util.h:449:12:    got unsigned int
../utilities/ovn-nbctl.c:3426:34: error: incorrect type in argument 1
(different base types)
../utilities/ovn-nbctl.c:3426:34:    expected unsigned int [usertype] __bsx
../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32 [usertype]
network
../utilities/ovn-nbctl.c:3426:34: error: incorrect type in argument 1
(different base types)
../utilities/ovn-nbctl.c:3426:34:    expected unsigned int [usertype] __bsx
../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32 [usertype]
network
../utilities/ovn-nbctl.c:3426:34: error: incorrect type in argument 1
(different base types)
../utilities/ovn-nbctl.c:3426:34:    expected unsigned int [usertype] __bsx
../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32 [usertype]
network
../utilities/ovn-nbctl.c:3426:34: error: incorrect type in argument 1
(different base types)
../utilities/ovn-nbctl.c:3426:34:    expected unsigned int [usertype] __bsx
../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32 [usertype]
network
../utilities/ovn-nbctl.c:3428:39: error: incorrect type in argument 1
(different base types)
../utilities/ovn-nbctl.c:3428:39:    expected unsigned int [usertype] __bsx
../utilities/ovn-nbctl.c:3428:39:    got restricted ovs_be32 [usertype]
network
../utilities/ovn-nbctl.c:3428:39: error: incorrect type in argument 1
(different base types)
../utilities/ovn-nbctl.c:3428:39:    expected unsigned int [usertype] __bsx
../utilities/ovn-nbctl.c:3428:39:    got restricted ovs_be32 [usertype]
network
../utilities/ovn-nbctl.c:3428:39: error: incorrect type in argument 1
(different base types)
../utilities/ovn-nbctl.c:3428:39:    expected unsigned int [usertype] __bsx
../utilities/ovn-nbctl.c:3428:39:    got restricted ovs_be32 [usertype]
network
../utilities/ovn-nbctl.c:3428:39: error: incorrect type in argument 1
(different base types)
../utilities/ovn-nbctl.c:3428:39:    expected unsigned int [usertype] __bsx
...
...
make[2]: *** Waiting for unfinished jobs....
libtool: compile:  env REAL_CC=gcc "CHECK=sparse -Wsparse-error -I
../include/sparse -m64 -I /usr/local/include  " cgcc -target=x86_64
-DHAVE_CONFIG_H -I. -I.. -I ../ovs/include -I ./ovs/include -I ../ovs/lib
-I ./ovs/lib -I ../ovs -I ./ovs -I ../lib -I ./lib -Wstrict-prototypes
-Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security
-Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align
-Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
-Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool
-Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare
-Wshift-negative-value -Wduplicated-cond -Wshadow -Wmultistatement-macros
-Wcast-align=strict -Werror -Werror -g -O2 -MT lib/acl-log.lo -MD -MP -MF
lib/.deps/acl-log.Tpo -c ../lib/acl-log.c -o lib/acl-log.o
libtool: compile:  env REAL_CC=gcc "CHECK=sparse -Wsparse-error -I
../include/sparse -m64 -I /usr/local/include  " cgcc -target=x86_64
-DHAVE_CONFIG_H -I. -I.. -I ../ovs/include -I ./ovs/include -I ../ovs/lib
-I ./ovs/lib -I ../ovs -I ./ovs -I ../lib -I ./lib -Wstrict-prototypes
-Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security
-Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align
-Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
-Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool
-Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare
-Wshift-negative-value -Wduplicated-cond -Wshadow -Wmultistatement-macros
-Wcast-align=strict -Werror -Werror -g -O2 -MT lib/actions.lo -MD -MP -MF
lib/.deps/actions.Tpo -c ../lib/actions.c -o lib/actions.o
../lib/actions.c:723:32: error: incorrect type in initializer (different
base types)
../lib/actions.c:723:32:    expected restricted ovs_be32 const [usertype]
value
../lib/actions.c:723:32:    got unsigned int
../lib/actions.c:724:31: error: incorrect type in initializer (different
base types)
../lib/actions.c:724:31:    expected restricted ovs_be32 const [usertype]
mask
../lib/actions.c:724:31:    got unsigned int
../lib/actions.c:976:42: error: incorrect type in argument 1 (different
base types)
../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
../lib/actions.c:976:42:    got restricted ovs_be32 const [usertype] ipv4
../lib/actions.c:976:42: error: incorrect type in argument 1 (different
base types)
../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
../lib/actions.c:976:42:    got restricted ovs_be32 const [usertype] ipv4
../lib/actions.c:976:42: error: incorrect type in argument 1 (different
base types)
../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
../lib/actions.c:976:42:    got restricted ovs_be32 const [usertype] ipv4
../lib/actions.c:976:42: error: incorrect type in argument 1 (different
base types)
../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
../lib/actions.c:976:42:    got restricted ovs_be32 const [usertype] ipv4
../lib/actions.c:1970:20: error: incorrect type in initializer (different
base types)
../lib/actions.c:1970:20:    expected restricted ovs_be32 [usertype] ofs
../lib/actions.c:1970:20:    got unsigned int
*********




br,Damijan

On Fri, Jul 26, 2019 at 10:30 AM Dumitru Ceara <[email protected]> wrote:

On Fri, Jul 26, 2019 at 8:21 AM Numan Siddique <[email protected]>
wrote:

Hello All,

The split work is almost done and we have pushed it to the ovn repo
branch
for now - https://github.com/ovn-org/ovn/commits/ovs_ovn_split
If some one is interested, please try it out and let us know any
comments
or issues.

Hi Numan,

It looks like the ovs_ovn_split branch doesn't build:

# git clone https://github.com/ovn-org/ovn.git ovn
# cd ovn
# ./boot.sh
# ./configure --enable-Werror --enable-sparse
# make
make  all-recursive
make[1]: Entering directory `/root/ovn'
Making all in ovs
make[2]: Entering directory `/root/ovn/ovs'
make  all-recursive
make[3]: Entering directory `/root/ovn/ovs'
Making all in datapath
make[4]: Entering directory `/root/ovn/ovs/datapath'
make[5]: Entering directory `/root/ovn/ovs/datapath'
make[5]: Leaving directory `/root/ovn/ovs/datapath'
make[4]: Leaving directory `/root/ovn/ovs/datapath'
make[4]: Entering directory `/root/ovn/ovs'
make[4]: Leaving directory `/root/ovn/ovs'
make[3]: Leaving directory `/root/ovn/ovs'
make[2]: Leaving directory `/root/ovn/ovs'
make[2]: Entering directory `/root/ovn'
depbase=`echo lib/acl-log.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool  --tag=CC   --mode=compile env REAL_CC="gcc
-std=gnu99" CHECK="sparse -Wsparse-error -I ./include/sparse -m64 -I
/usr/local/include  " cgcc -target=x86_64 -DHAVE_CONFIG_H -I.    -I
./ovs/include -I ./ovs/include -I ./ovs/lib -I ./ovs/lib -I ./ovs -I
./ovs -I ./lib -I ./lib    -Wstrict-prototypes -Wall -Wextra
-Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security
-Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align
-Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
-Wmissing-field-initializers -fno-strict-aliasing -Wshadow -Werror
-Werror   -g -O2 -MT lib/acl-log.lo -MD -MP -MF $depbase.Tpo -c -o
lib/acl-log.lo lib/acl-log.c &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  env "REAL_CC=gcc -std=gnu99" "CHECK=sparse
-Wsparse-error -I ./include/sparse -m64 -I /usr/local/include  " cgcc
-target=x86_64 -DHAVE_CONFIG_H -I. -I ./ovs/include -I ./ovs/include
-I ./ovs/lib -I ./ovs/lib -I ./ovs -I ./ovs -I ./lib -I ./lib
-Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith
-Wformat -Wformat-security -Wswitch-enum -Wunused-parameter
-Wbad-function-cast -Wcast-align -Wstrict-prototypes
-Wold-style-definition -Wmissing-prototypes
-Wmissing-field-initializers -fno-strict-aliasing -Wshadow -Werror
-Werror -g -O2 -MT lib/acl-log.lo -MD -MP -MF lib/.deps/acl-log.Tpo -c
lib/acl-log.c -o lib/acl-log.o
./ovs/include/openvswitch/nsh.h:372:11: error: symbol '__v' shadows an
earlier one
./ovs/include/openvswitch/nsh.h:372:11: originally declared here
./ovs/include/openvswitch/nsh.h:372:11: error: symbol '__x' shadows an
earlier one
./ovs/include/openvswitch/nsh.h:372:11: originally declared here
./ovs/include/openvswitch/nsh.h:383:11: error: symbol '__v' shadows an
earlier one
./ovs/include/openvswitch/nsh.h:383:11: originally declared here
./ovs/include/openvswitch/nsh.h:383:11: error: symbol '__x' shadows an
earlier one
./ovs/include/openvswitch/nsh.h:383:11: originally declared here
make[2]: *** [lib/acl-log.lo] Error 1

Building ovs master works fine for me:

# git clone https://github.com/openvswitch/ovs.git ovs
# cd ovs
# ./boot.sh
# ./configure --enable-Werror --enable-sparse
# make
<snip>
mv tests/system-afxdp-testsuite.tmp tests/system-afxdp-testsuite
mv tests/system-kmod-testsuite.tmp tests/system-kmod-testsuite
mv tests/system-userspace-testsuite.tmp tests/system-userspace-testsuite
touch -c manpage-check
mv tests/testsuite.tmp tests/testsuite
make[2]: Leaving directory `/root/ovs'
make[1]: Leaving directory `/root/ovs'

Regards,
Dumitru


We are planning to push the changes to the master branch hopefully
Friday
if everything goes fine.

Thanks
Numan


On Fri, Jul 26, 2019 at 12:05 AM Mark Michelson <[email protected]>
wrote:

On 7/25/19 12:37 PM, Ilya Maximets wrote:
Hi.

I have a question regarding the split.
Sorry if it's obvious from the RFC splitting code which I didn't
look at.

The question is:
How the patches for the common data structures (lists, hash maps)
will be
applied to OVN? Will we need to post same patch for both
repositories in
the
future if it changes/fixes common libraries? Or all this code will
be
hosted
only in OVS repo and will be included like a submodule or
something like
that?

Best regards, Ilya Maximets.

Hi Ilya,

OVN will be a separate repo from OVS. Initially, OVS will be a
subtree
of OVN, but soon, we will want to be able to build OVN while having a
completely separate OVS on the system. When all is said and done, it
should be possible to build OVN as long as you have, say, an
ovs-devel
package installed on your system.

I think the answer to your question is that as an OVS developer, if
you
make a change to a core component, you only need to post the change
to
the OVS repo.

  From an OVN developer's perspective, if an OVN feature/bugfix
requires
a parallel change to be made to a core OVS library, then the OVN
developer will need to post the library change to OVS as well as the
usage of that change to OVN. As long as OVS is a subtree of OVN, it's
just a matter of ensuring the subtree is kept up to date. However,
once
OVS is built separately, then configure-time checks of OVS features
or
minimum version checks will need to be added to OVN to ensure that
the
code can build properly.

This approach should place most of the burden of OVN compatibility
with
OVS on OVN developers rather than OVS developers.

Numan and I have discussed this, and we're planning to perform
the split
tomorrow July 25. Numan will be applying the commits he
referenced below
to the ovn-org branch to get it up to date. I will be submitting a
review for OVS to remove all of the OVN code, documentation, etc.
from
it.

If there are any reasons why we should hold off on this, please
mention
them as soon as possible.

Thanks

On 7/22/19 2:35 PM, Numan Siddique wrote:
Hi Ben, Mark and All,

Now that branch 2.12 is created, shall we proceed with the
OVS/OVN
split ?

In order to do the split we need to do the below tasks

In ovn-org/ovn repo
Step 1. Sync the ovs subtree to the latest (from the OVS repo).
2. Delete all the ovn related code from the root dir. Right now
there
is
no history for the OVN files in the ovn-org/ovn repo
3. Copy OVN files from openvswitch/ovs repo using
git-filter-branch.
This will preserver the history.
4. Sync the test files from ovs subtree so that tests pass.

During this period its better to freeze merging OVN related
patches in
the OVS repo.
And finally delete the OVN related code from the OVS repo.

I have done a PoC here -

https://github.com/numansiddique/ovn/commits/ovn_sync_from_ovs_v3/p4
All the relates commits can be found here.


Does these steps seem fine ? Any concerns ?
If this seems fine, can we choose a date to start this process ?

Thanks
Numan




_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to