[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Build Problems for 2.1.13 with Win2K/Cygwin (ITS#2333)



I've updated HEAD not to send (or receive) this extra message as
it doesn't provide for interoperability with implementations not
expecting this message to be sent or received.

As you noted, specifying --disable-local works around the problem
by not attempting to build ldapi:// support.

Kurt


At 04:37 AM 3/1/2003, lucca@csun.edu wrote:
>On Thu, 27 Feb 2003 14:12:28 GMT
>bdkheit@budget.state.ny.us wrote:
>
>> Full_Name: Matt Heitker
>> Version: 2.1.13
>> OS: Win 2K/Cygwin
>> URL: ftp://ftp.openldap.org/incoming/
>> Submission from: (NULL) (161.11.133.50)
>
>> When I downloaded 2.1.13 and tried to build it, it had problems with
>> liblutil/getpeereid.c and libldap/os-local.c.
>
>> Both were looking for a definition of "struct iovec", which was not
>> found.
>
>For reference, MacOS X exhibits this same problem in both 2.1.13 and
>2.1.14.
>
>#including <sys/uio.h> does indeed show it what an iovec is, and seems
>to be appropriate for code using readv/writev.
>
>Unfortunately, that is not sufficient to get it to build:
>getpeereid.c: In function `getpeereid':
>getpeereid.c:61: structure has no member named `msg_accrights'
>getpeereid.c:62: structure has no member named `msg_accrightslen'
>getpeereid.c:63: structure has no member named `msg_accrightslen'
>
>grepping, I find those are indeed not present in struct msghdr, but
>rather in struct omsghdr.
>
>Curious, I looked at my linux box and found the following in
>/usr/include/linux/socket.h:
>
>/*
> *      As we do 4.4BSD message passing we use a 4.4BSD message passing
> *      system, not 4.3. Thus msg_accrights(len) are now missing. They
> *      belong in an obscure libc emulation or the bin.
> */
>
>Hm.  So linux doesn't have msg_accrights* either.
>
>MacOS X happens to include enough of BSD5ish things to have
>getpeereid() documented in the manpages.
>
>Unfortunately they did not include it in libc, even though it is
>documented.  Sigh.  AC_REPLACE_FUNCS correctly decides to replace it.
>
>About this point I realized that all of this fuss is used only for
>unix domain sockets, which I'm not using.
>
>adding --disable-local to ./configure seems to have fixed things.
>
>configure.in only checks for a valid <sys/un.h> before enabling local.
>The problem is, local gets enabled on my linux hosts and they build it
>just fine.
>
>getpeereid.c:21 tests for SO_PEERCRED, which is defined on the linux
>hosts but not the mac.  As a result, DO_SENDMSG gets #define'd and it
>tries to use msg_accrights* stuff that doesn't exist anymore.
>
>I'm not sure what to do with that, other than --disable-local and go
>about my merry business for now...  ^_^
>
>$ uname -a
>Darwin Peregrine 6.3 Darwin Kernel Version 6.3: Sat Dec 14 03:11:25 PST 2002; root:xnu/xnu-344.23.obj~4/RELEASE_PPC  Power Macintosh powerpc
>
>$ gcc -v
>Reading specs from /usr/libexec/gcc/darwin/ppc/3.1/specs
>Thread model: posix
>Apple Computer, Inc. GCC version 1151, based on gcc version 3.1 20020420 (prerelease)
>
>Matthew Backes
>lucca@csun.edu