Discussion:
[OMPI users] Libnl bug in openmpi v3.0.0?
Stephen Guzik
2017-09-20 23:53:54 UTC
Permalink
When compiling (on Debian stretch), I see:

In file included from libnl_utils.h:52:0,
from reachable_netlink_utils_common.c:48:
libnl1_utils.h:54:26: error: too few arguments to function ‘nl_geterror’
#define NL_GETERROR(err) nl_geterror()
^
libnl1_utils.h:80:5: note: in expansion of macro ‘NL_GETERROR’
NL_GETERROR(err)); \
^~~~~~~~~~~
reachable_netlink_utils_common.c:310:5: note: in expansion of macro
‘NL_RECVMSGS’
NL_RECVMSGS(unlsk->nlh, arg, EHOSTUNREACH, err, out);
^~~~~~~~~~~
In file included from /usr/include/libnl3/netlink/netlink.h:31:0,
from libnl1_utils.h:47,
from libnl_utils.h:52,
from reachable_netlink_utils_common.c:48:
/usr/include/libnl3/netlink/errno.h:56:21: note: declared here
extern const char * nl_geterror(int);

Modifying openmpi-3.0.0/opal/mca/reachable/netlink/libnl1_utils.h from

#define NL_GETERROR(err) nl_geterror()

to

#define NL_GETERROR(err) nl_geterror(err)

as in libnl3_utils.h allows for successful compilation. But from
configure, I see

checking for libraries that use libnl v1... (none)
checking for libraries that use libnl v3... ibverbs nl-3

so I wonder if perhaps there is something more serious is going on. Any
suggestions?

Thanks,
Stephen Guzik
Gilles Gouaillardet
2017-09-21 00:22:21 UTC
Permalink
Thanks for the report,


is this related to https://github.com/open-mpi/ompi/issues/4211 ?

there is a known issue when libnl-3 is installed but libnl-route-3 is not


Cheers,


Gilles
Post by Stephen Guzik
In file included from libnl_utils.h:52:0,
libnl1_utils.h:54:26: error: too few arguments to function ‘nl_geterror’
#define NL_GETERROR(err) nl_geterror()
^
libnl1_utils.h:80:5: note: in expansion of macro ‘NL_GETERROR’
NL_GETERROR(err)); \
^~~~~~~~~~~
reachable_netlink_utils_common.c:310:5: note: in expansion of macro
‘NL_RECVMSGS’
NL_RECVMSGS(unlsk->nlh, arg, EHOSTUNREACH, err, out);
^~~~~~~~~~~
In file included from /usr/include/libnl3/netlink/netlink.h:31:0,
from libnl1_utils.h:47,
from libnl_utils.h:52,
/usr/include/libnl3/netlink/errno.h:56:21: note: declared here
extern const char * nl_geterror(int);
Modifying openmpi-3.0.0/opal/mca/reachable/netlink/libnl1_utils.h from
#define NL_GETERROR(err) nl_geterror()
to
#define NL_GETERROR(err) nl_geterror(err)
as in libnl3_utils.h allows for successful compilation. But from
configure, I see
checking for libraries that use libnl v1... (none)
checking for libraries that use libnl v3... ibverbs nl-3
so I wonder if perhaps there is something more serious is going on. Any
suggestions?
Thanks,
Stephen Guzik
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
Gilles Gouaillardet
2017-09-21 04:04:46 UTC
Permalink
Stephen,


this is very likely related to the issue already reported in github.

meanwhile, you can apply the attached patch

patch configure < configure.diff

and then re-configure and make.

note this is a temporary workaround, it simply prevent the build of the
reachable/netlink component,
and the upcoming real fix will be able to build this component.

Cheers,

Gilles
Post by Gilles Gouaillardet
Thanks for the report,
is this related to https://github.com/open-mpi/ompi/issues/4211 ?
there is a known issue when libnl-3 is installed but libnl-route-3 is not
Cheers,
Gilles
Post by Stephen Guzik
In file included from libnl_utils.h:52:0,
libnl1_utils.h:54:26: error: too few arguments to function ‘nl_geterror’
  #define NL_GETERROR(err) nl_geterror()
                           ^
libnl1_utils.h:80:5: note: in expansion of macro ‘NL_GETERROR’
      NL_GETERROR(err)); \
      ^~~~~~~~~~~
reachable_netlink_utils_common.c:310:5: note: in expansion of macro
‘NL_RECVMSGS’
      NL_RECVMSGS(unlsk->nlh, arg, EHOSTUNREACH, err, out);
      ^~~~~~~~~~~
In file included from /usr/include/libnl3/netlink/netlink.h:31:0,
                  from libnl1_utils.h:47,
                  from libnl_utils.h:52,
/usr/include/libnl3/netlink/errno.h:56:21: note: declared here
  extern const char * nl_geterror(int);
Modifying openmpi-3.0.0/opal/mca/reachable/netlink/libnl1_utils.h from
#define NL_GETERROR(err) nl_geterror()
to
#define NL_GETERROR(err) nl_geterror(err)
as in libnl3_utils.h allows for successful compilation.  But from
configure, I see
checking for libraries that use libnl v1... (none)
checking for libraries that use libnl v3... ibverbs nl-3
so I wonder if perhaps there is something more serious is going on.  Any
suggestions?
Thanks,
Stephen Guzik
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
Gilles Gouaillardet
2017-09-21 06:55:47 UTC
Permalink
Stephen,


a simpler option is to install the libnl-route-3-dev.

note you will not be able to build the reachable/netlink component
without this package.


Cheers,


Gilles
Post by Gilles Gouaillardet
Stephen,
this is very likely related to the issue already reported in github.
meanwhile, you can apply the attached patch
patch configure < configure.diff
and then re-configure and make.
note this is a temporary workaround, it simply prevent the build of
the reachable/netlink component,
and the upcoming real fix will be able to build this component.
Cheers,
Gilles
Post by Gilles Gouaillardet
Thanks for the report,
is this related to https://github.com/open-mpi/ompi/issues/4211 ?
there is a known issue when libnl-3 is installed but libnl-route-3 is not
Cheers,
Gilles
Post by Stephen Guzik
In file included from libnl_utils.h:52:0,
libnl1_utils.h:54:26: error: too few arguments to function
‘nl_geterror’
  #define NL_GETERROR(err) nl_geterror()
                           ^
libnl1_utils.h:80:5: note: in expansion of macro ‘NL_GETERROR’
      NL_GETERROR(err)); \
      ^~~~~~~~~~~
reachable_netlink_utils_common.c:310:5: note: in expansion of macro
‘NL_RECVMSGS’
      NL_RECVMSGS(unlsk->nlh, arg, EHOSTUNREACH, err, out);
      ^~~~~~~~~~~
In file included from /usr/include/libnl3/netlink/netlink.h:31:0,
                  from libnl1_utils.h:47,
                  from libnl_utils.h:52,
/usr/include/libnl3/netlink/errno.h:56:21: note: declared here
  extern const char * nl_geterror(int);
Modifying openmpi-3.0.0/opal/mca/reachable/netlink/libnl1_utils.h from
#define NL_GETERROR(err) nl_geterror()
to
#define NL_GETERROR(err) nl_geterror(err)
as in libnl3_utils.h allows for successful compilation.  But from
configure, I see
checking for libraries that use libnl v1... (none)
checking for libraries that use libnl v3... ibverbs nl-3
so I wonder if perhaps there is something more serious is going on. 
Any
suggestions?
Thanks,
Stephen Guzik
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
Stephen Guzik
2017-09-22 18:09:22 UTC
Permalink
Yes, I can confirm that openmpi 3.0.0 builds without issue when
libnl-route-3-dev is installed.

Thanks,
Stephen

Stephen Guzik, Ph.D.
Assistant Professor, Department of Mechanical Engineering
Colorado State University
Post by Gilles Gouaillardet
Stephen,
a simpler option is to install the libnl-route-3-dev.
note you will not be able to build the reachable/netlink component
without this package.
Cheers,
Gilles
Post by Gilles Gouaillardet
Stephen,
this is very likely related to the issue already reported in github.
meanwhile, you can apply the attached patch
patch configure < configure.diff
and then re-configure and make.
note this is a temporary workaround, it simply prevent the build of
the reachable/netlink component,
and the upcoming real fix will be able to build this component.
Cheers,
Gilles
Post by Gilles Gouaillardet
Thanks for the report,
is this related to https://github.com/open-mpi/ompi/issues/4211 ?
there is a known issue when libnl-3 is installed but libnl-route-3 is not
Cheers,
Gilles
Post by Stephen Guzik
In file included from libnl_utils.h:52:0,
libnl1_utils.h:54:26: error: too few arguments to function
‘nl_geterror’
#define NL_GETERROR(err) nl_geterror()
^
libnl1_utils.h:80:5: note: in expansion of macro ‘NL_GETERROR’
NL_GETERROR(err)); \
^~~~~~~~~~~
reachable_netlink_utils_common.c:310:5: note: in expansion of macro
‘NL_RECVMSGS’
NL_RECVMSGS(unlsk->nlh, arg, EHOSTUNREACH, err, out);
^~~~~~~~~~~
In file included from /usr/include/libnl3/netlink/netlink.h:31:0,
from libnl1_utils.h:47,
from libnl_utils.h:52,
/usr/include/libnl3/netlink/errno.h:56:21: note: declared here
extern const char * nl_geterror(int);
Modifying openmpi-3.0.0/opal/mca/reachable/netlink/libnl1_utils.h from
#define NL_GETERROR(err) nl_geterror()
to
#define NL_GETERROR(err) nl_geterror(err)
as in libnl3_utils.h allows for successful compilation. But from
configure, I see
checking for libraries that use libnl v1... (none)
checking for libraries that use libnl v3... ibverbs nl-3
so I wonder if perhaps there is something more serious is going on. Any
suggestions?
Thanks,
Stephen Guzik
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
Loading...