Parcourir la source

Enforce use of GNU pth for OpenLDAP. This fixes crashes that occur under heavy parallel load in preemtive threading enviroments (Solaris) where slapd(8C) incorrectly assumes underlying libraries like db are being built threading aware and take care of appropriate locking. This is not the case in OpenPKG because db is using non-Pthread mutex. As a side effect our test setup not only passes a stress test where it broke previously but also indicates a performance boost by factor 3.5 on Solaris 8 and factor 4 on Solaris 9. There's neither gain nor pain in reliability and performance for FreeBSD4. Others were not tested.

Thomas Lotterer il y a 21 ans
Parent
commit
d95fcb8c08
1 fichiers modifiés avec 6 ajouts et 5 suppressions
  1. 6 5
      openldap/openldap.spec

+ 6 - 5
openldap/openldap.spec

@@ -53,8 +53,8 @@ Prefix:       %{l_prefix}
 BuildRoot:    %{l_buildroot}
 BuildPreReq:  OpenPKG, openpkg >= 20040130, make, gcc
 PreReq:       OpenPKG, openpkg >= 20040130
-BuildPreReq:  readline, openssl, db >= 4.2
-PreReq:       readline, openssl, db >= 4.2
+BuildPreReq:  readline, openssl, db >= 4.2, pth
+PreReq:       readline, openssl, db >= 4.2, pth
 %if "%{with_fsl}" == "yes"
 BuildPreReq:  fsl >= 1.2.0
 PreReq:       fsl >= 1.2.0
@@ -101,10 +101,10 @@ AutoReqProv:  no
     cf="%{l_cppflags}"
 %endif
     CC="%{l_cc}" \
-    CFLAGS="%{l_cflags -O}" \
+    CFLAGS="%{l_cflags -O} `%{l_prefix}/bin/pth-config --cflags`" \
     CPPFLAGS="$cf" \
-    LDFLAGS="%{l_ldflags} %{l_fsl_ldflags}" \
-    LIBS="%{l_fsl_libs}" \
+    LDFLAGS="%{l_ldflags} `%{l_prefix}/bin/pth-config --ldflags` %{l_fsl_ldflags}" \
+    LIBS="`%{l_prefix}/bin/pth-config --libs` %{l_fsl_libs}" \
     ./configure \
         --cache-file=./config.cache \
         --prefix=%{l_prefix} \
@@ -153,6 +153,7 @@ AutoReqProv:  no
 %endif
         --with-dyngroup \
         --with-proxycache \
+        --with-threads=pth \
         --enable-slurpd
 
     #   build toolkit