[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: 2.0-alpha and Solaris 7
At 03:53 AM 8/14/99 +1000, David J N Begley wrote:
>Folks, just a few notes on trying to build OpenLDAP 2.0-alpha on Solaris 7 for
>testing; most of this is an update on existing known problems.
>
>Test Environ:
> OpenLDAP 2.0-alpha, Solaris 7, sun4c (SPARC), gcc 2.8.1, Berkeley DB 2.7.5
Does anyone know if the current tests work with the vendor's C compiler?
(I suspect the "-mt" is used).
Does anyone know what the vendor compiler does with:
-mt, -pthread, -kthread, etc?
Which tests are "yes" and which are "no" when preceeding tests are disabled?
What does GCC do with -mt, -pthread, -kthread, etc?
>From my reading of egcs specs, I would think that -pthreads or
-threads would work. I don't have gcc 2.8 handy. Can you run
configure repeatingly each time forcing another test to no until
you get a compat success?
>- Problem #1: OpenLDAP and Solaris threads don't like each other (saga)
>
> With OpenLDAP 1.x the error has been:
>
> pthread.h and pthread_create are not compatible
>
> With OpenLDAP 2.0-alpha the error has become:
>
> pthread_create is not usable, check environment settings
I believe we at least fixed pthread detection when the vendor's
compiler is used. Some versions (or derivities of GNU cc) may
also work.
> In both cases, the cause is generally the same (Solaris' libc including
> a bogus pthread_create stub - Solaris 2.6 and 7, but not 2.5.1).
I trust that you have complained to your vendor.
> Previous discussions (leading to FAQ notes) has revolved around
> four approaches:
>
> a. disable threads;
> b. use Sun LWP's instead;
> c. add "-lpthread -lposix4" to LIBS before running configure; or,
> d. preset a lot of environment variables to "no" to trick configure into
> using the correct POSIX threads configuration for Solaris.
e. improve the test.
Can you keep to see which pthreads routines are NOT stubbed in libc?
(I rather extend our AC_TRY_LINK test then have to resort to
AC_TRY_RUN test).
> It would be *really* nice if configure just recognised this problem and
> worked around it (after all, AIX and Linux seem to be singled out for
> special threads attention in configure - why not Solaris?
It should be noted that under AIX we only attempt to choose the
appropriate vendor compiler when the user has selected pthreads
and did not specify a compiler. An AIX user who chooses a compiler
is left on their own.
Solaris has no "special" compiler, but a "special" flag (-mt).
We support this.
Linux gets no specific special attention. However, we do check
to see if the pthread support which was detected is LinuxThreads.
LinuxThreads may exist on non-Linux boxes... you could even port
it to Solaris if you wanted to.
> # skip tests we know will fail, jump to -lpthread
> # since sunpro c uses -mt, maybe we should not do this if CC is sunpro c
And what if we using CC=gcc LIBS=-lmypthreads?
or CC=gcc-with-work-pthreads-flag ?
or CC=who-knows-what ?
Does the -mt test fail under gcc?
If so, why does the -kthread test not fail. I would assume
this would either work or generate an error which would cause
the test to fail.
> Is there any particular reason for the threads detection code used by
> configure at present?
Yes. The configure script detects based upon what is available in
environment and not what what we guess is available. To support
cross compiling, AC_TRY_RUN tests should be avoided.
>- Problem #2: symbol inet_aton not found linking slapd
This was fixed in devel, I believe. (though we still need to
recode to use the internal inet_aton routine in a few places).
> The problem was in fact that "-lresolv" wasn't even being
> linked at all to slapd.
A new -lresolv test is in the works.
>At this point slapd core dumped upon startup, the caffeine ran out and the
>sleep process gained control of the CPU.
Thanks for the feedback. It will likely be a few days before
alpha2 is cut.
Kurt