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

Henning Westerholt henning.westerholt at 1und1.de
Thu Oct 16 10:34:35 CEST 2008


On Thursday 16 October 2008, Jason Creighton wrote:
> [Sorry if the devel list isn't the right place for this; Please steer me
> in the right direction if it is not.]

Hi Jason,

you could also open a bug report on our tracker for this issues, but now lets 
discuss this on the list.

> 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:
> [..]
> 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)

Yes, i think its ok to replace the <wait.h> with the <sys/wait.h>. I tested 
it, on my system (debian) wait.h just includes <sys/wait.h>. I'll later 
commit this change to trunk and also backport it to the 1.3/1.4 branches. All 
other places in the trunk uses only sys/wait.h, so i think this is ok.

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

Strange, perhaps the comment in the file is obselet. I don't think that adding 
a '#include <sys/types.h>' to this file will break something. But perhaps we 
can add this with an #ifdef? Do you know what type of #define is usually 
checked against an openbsd compiler/ system?

> 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_i
>d=139143

Yes, this issue should be already fixed.

Cheers,

Henning



More information about the Devel mailing list