[Kamailio-Devel] Build failures with seas and mi_xmlrpc modules on OpenBSD 4.3

Jason Creighton jcreigh at gmail.com
Thu Oct 16 06:38:01 CEST 2008


Hi,

[Sorry if the devel list isn't the right place for this; Please steer me
in the right direction if it is not.]

I'm trying to build Kamailio 1.4.1 on OpenBSD 4.3, and I've having a few
   issues with some of the modules.

The mi_xmlrpc module fails to build with what appears to be a simple
problem:

abyss_thread_fork.c:40:18: wait.h: No such file or directory
abyss_thread_fork.c: In function `ThreadWaitAndRelease':
abyss_thread_fork.c:274: warning: implicit declaration of function `waitpid'
gmake[1]: *** [abyss_thread_fork.o] Error 1
gmake: *** [modules] Error 2

It appears that on OpenBSD, there is no <wait.h>, only a <sys/wait.h>.
Considering that the other two files in that module that use wait.h
(abyss_xmlrpc_server.c and mi_xmlrpc.c) include the <sys/wait.h> version
already, it doesn't seem like there would be a problem with doing that
in abyss_thread_fork.c. (It makes it build for me, anyway)

seas has a more subtle problem, and I'm not even sure it's a problem
with Kamailio. The actual error message is kinda large, so I've attached
it rather than including it inline. The upshot appears to be that on
OpenBSD (4.3 anyway) it's possible to include <netinet/in.h> is such a
way that it fails because it depends on some typedefs that are defined
in <sys/types.h> (eg, in_addr_t)

There's a note about this in sys/types.h:

/*
   * XPG4.2 states that inclusion of <netinet/in.h> must pull these
   * in and that inclusion of <sys/socket.h> must pull in sa_family_t.
   * We put these here because there are other headers that require
   * these types and <sys/socket.h> and <netinet/in.h> will indirectly
   * include <sys/types.h>.
   * XXX - now that we have protected versions these should move.
   */
typedef __in_addr_t	in_addr_t;	/* base type for internet address */
typedef __in_port_t	in_port_t;	/* IP port type */
typedef __sa_family_t	sa_family_t;	/* sockaddr address family type */
typedef __socklen_t	socklen_t;	/* length type for network syscalls */

But apparently sys/types.h isn't being included like they say it will, I
can get it to compile if I force inclusion of <sys/types.h> (eg, with
"DEFS+=-include sys/types.h" in that module's Makefule), but I have no
idea what the right solution would be.

Also, mediaproxy doesn't compile due to the lack of MSG_NOSIGNAL on
OpenBSD, but it looks like this is probably fixed in trunk, so that's no
big deal:
http://sourceforge.net/tracker/?func=detail&atid=743020&aid=2132257&group_id=139143

Thanks,

Jason Creighton

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: seas_module_build_failure.txt
Url: http://lists.kamailio.org/pipermail/devel/attachments/20081015/c3b9a2ac/attachment.txt 


More information about the Devel mailing list