I am trying to build OpenLDAP-Release 1.2.3 on HPUX 10.20, hardware platform HP 9000/s800 G30 series
with all recommended OS patches including Y2K kit installed.
I can successfully build and run OpenLDAP 1.2.3 on HPUX 11 by applying the pthread_detach patch that I found on this mail archive to configure .
But my problem is we need to run 7 LDAP servers spread across 4 countries and our mail backbone is built on HPUX 10.20. If necessary we will upgrade our servers to HPUX 11 but this will delay the project and be logistically quite difficult as some of the servers are located in "very" remote locations.
I need slurpd replication (with the multi-master patch) therefore threads support, have tried both the native HP DCE threads draft4 and PMPthreads 1.8.9
Using native DCE threads draft4 the configure fails in similar ways to HPUX 11
checking for pthread_join in -lpthreads... no
checking for pthread_create() in HP-UX -lpthread... yes
checking for sched_yield... no
checking for pthread_yield... no
checking for sched_yield in -lrt... no
checking for thr_yield... no
configure: warning: could not locate sched_yield() or pthread_yield()
checking for pthread_kill... no
checking for pthread_detach with <pthread.h>... no
configure: error: could not locate pthread_detach()
I have tried my best to get past this step in configure but to no avail. Sure I can get it past here but only to fail a few lines down with Solaris looking errors like pthread.h and pthread_create are not compatible.
So then I turned to PMPthreads 1.8.9
Using PMPthreads I can get a clean compile but slapd hangs.
Running make test hangs on the second test at this point:
>>>>> Test succeeded>>>>>
./scripts/test001-ldif2ldbm completed OK.
>>>>> waiting 5 seconds
for things to exit
>>>>> Starting test002-populate ...
Cleaning up in ./test-db...
Starting slapd on TCP/IP port 9009...
Using ldapsearch to check that slapd is running...
And there it stays.
ps -ef | grep slapd shows that slapd is spinning up the cpu cycles at a rate of 1:1 and at the top of top
pts/4 21258 root 212 20 1312K 652K run 12:38 89.91 89.75 slapd
Interestingly enough if I run each test manually killing (-9) the slapd demon between each test then all tests complete successfully but in real life slapd keeps hanging and spinning.
Some background is required here, using PMP threads the configure was hanging at the "checking if select yields using threads" point and I found removing the V3 lib was the answer.
If the V3 lib is included then the select yield test would hang, without the V3 lib the test passes.
At the time I thought removing the V3 lib would not have any detrimental effect on OpenLDAP as I thought the sig handling had been moved from V3 to libc on HPUX. In fact on HPUX 11 and Freebsd the V3 lib is linked to libempty, which I also tried doing on 10.20.
Considering the problems I have with slapd hanging between the tests and the fact that each test passes if I kill -9 the demon first, I now suspect I the V3 lib is needed. But if this is the case how do I get past the "checking if select yields" test in configure. I tried passing --without-yielding-select, that got me past the check but the resultant slapd was totally unusable, could not startup and bind to the socket.
Since this point I have tried using every combination I can think of being different ldbm back ends, gcc, cc, different physical machines, different build environments, different versions of OpenLDAP, but at the end of the day the I can't find a working combination on our HPUX 10.20 machines
So my question to those of you out there that have built OpenLDAP on HPUX 10.20 is how did you do it?
What threads package did you use, which compiler, which back-end, what environment, which version of OpenLDAP, what tricks where involved other than those in the FAQ, etc?
I guess also, has anyone built OpenLDAP on HPUX 10.20 after applying theY2K patches as I suspect that these patches may have introduced the problem?
All suggestions and recommendations welcome, please.
To be honest at this point I have lost my direction, I am not sure what to try next, some pointers in which build environment I should concentrate on would also be appreciated.
Thanks and regards