Closed Bug 452908 Opened 16 years ago Closed 16 years ago

remove dependency of this SUNWprd's private directory files

Categories

(Directory :: LDAP C SDK, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: u238590, Assigned: mcs)

References

Details

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
Build Identifier: LDAPCSDK_6_0_5_RTM

Mozilla's LDAP C SDK doesn't compile on Open Solaris as NSPR's private directory is not present in SUNWprd package (and obsolete directory has 3 files missing).

Can we remove dependency of this SUNWprd's private directory files?

Reproducible: Always

Steps to Reproduce:
1. Download and install OpenSolaris 2008.05 from http://www.opensolaris.com/get/ which has snv build 86 on an x86 machine.
2. Read and Follow instructions given in release notes http://opensolaris.org/os/project/indiana/resources/rn3/
    * $ pfexec pkg refresh
    * $ pfexec pkg install SUNWipkg@0.5.11-0.86
    * $ pfexec pkg install entire@0.5.11-0.86
3. Install these packages
    * $sudo pkg install SUNWgmake SUNWhea sunstudio pkg:/SUNWpr@0.5.11,5.11-0.95 pkg:/SUNWprd@0.5.11,5.11-0.95 pkg:/SUNWtls@0.5.11,5.11-0.95 pkg:/SUNWtlsd@0.5.11,5.11-0.95  SUNWcvs
(Note you may also need to install pkg:/SUNWtoo@0.5.11,5.11-0.95 in case ld gets ruined.)
4. Checkout and build and install Mozilla LDAP C SDK source code as per http://wiki.mozilla.org/LDAP_C_SDK#Latest_News_-_7.2F5.2F2007
    * $ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -P -rLDAPCSDK_6_0_5_RTM DirectorySDKSourceC
    * $ cd mozilla/directory/c-sdk
    * $ export PATH=/opt/SunStudioExpress/bin:$PATH
    * $ ./configure --with-sasl --with-nspr-inc=/usr/include/mps --with-nspr-lib=/usr/lib/mps --with-nspr --with-nss-inc=/usr/include/mps --with-nss-lib=/usr/lib/mps --with-nss --enable-clu
    * $ gmake
I do not have access to an Open Solaris system.  What part of the LDAP C SDK code depends on NSPR private files?  What error message do you see when you try to compile?
Since SUNWprd doesnt' contain /usr/include/mps/private directory and only 1 file obsolete/prototypes.h in /usr/include/mps/obsolete directory.

Here is the error I get when I compile :
/opt/SunStudioExpress/bin/cc -xstrconst -o ldappr-public.o -c     -xs -g -KPIC  -DDEBUG_meena  -DDEBUG=1 -DXP_UNIX=1 -DSVR4=1 -DSYSV=1 -D__svr4=1 -D__svr4__=1 -DSOLARIS=1 -DHAVE_FCNTL_FILE_LOCKING=1 -Di386=1 -D_PR_HAVE_OFF64_T=1 -DHAVE_LCHOWN=1 -DHAVE_STRERROR=1 -DHAVE_SASL=1 -DHAVE_SASL_OPTIONS=1 -DLDAP_SASLIO_HOOKS=1 -D_REENTRANT=1 -DHAVE_POINTER_LOCALTIME_R=1  -DFORCE_PR_LOG -D_PR_PTHREADS -UHAVE_CVAR_BUILT_ON_SEM -DUSE_WAITPID -DNEEDPROTOS -DLDAP_DEBUG  -DNET_SSL  -DNO_LIBLCACHE -DLDAP_REFERRALS     -DNS_DOMESTIC  -I../../../../../dist/public/ldap -I../../../ldap/include -I../../../../../dist/./include -I/usr/include/mps  ldappr-public.c
"ldappr-public.c", line 45: cannot find include file: <private/pprio.h>
"ldappr-public.c", line 441: warning: implicit function declaration: PR_ImportTCPSocket
"ldappr-public.c", line 441: warning: improper pointer/integer combination: op "="
cc: acomp failed for ldappr-public.c
gmake[4]: *** [ldappr-public.o] Error 2
gmake[4]: Leaving directory `/export/home/mozldap/build/mozldap-6.0.4/mozilla/directory/c-sdk/ldap/libraries/libprldap'
gmake[3]: *** [export] Error 2
gmake[3]: Leaving directory `/export/home/mozldap/build/mozldap-6.0.4/mozilla/directory/c-sdk/ldap/libraries'
gmake[2]: *** [export] Error 2
gmake[2]: Leaving directory `/export/home/mozldap/build/mozldap-6.0.4/mozilla/directory/c-sdk/ldap'
gmake[1]: *** [export] Error 2
gmake[1]: Leaving directory `/export/home/mozldap/build/mozldap-6.0.4/mozilla/directory/c-sdk'
gmake: *** [build] Error 2
Its using PR_ImportTCPSocket which is defined in private/pprio.h.

In my opinion, if we can replace this function with some other interface we may be able to compile it without any problems.

440         /* Import file descriptor of connection made via ldap_init() */
441         if (NULL == (pr_socket = PR_ImportTCPSocket(orig_socket)) ) {
442             ldap_set_lderrno( ld, LDAP_LOCAL_ERROR, NULL, NULL );
443             return( LDAP_LOCAL_ERROR );
444         }
Code snippet is from "mozilla/directory/c-sdk/ldap/libraries/libprldap/ldappr-public.c" line 440 of 454
$gpatch -p 0 < ldappr-public.c.patch works for me.

$cat ldappr-public.c.patch
--- build/mozldap-6.0.4/mozilla/directory/c-sdk/ldap/libraries/libprldap/ldappr-public.c        2008-08-21 14:50:05.152493442 +0530
+++ build/mozldap-6.0.4/mozilla/directory/c-sdk/ldap/libraries/libprldap/ldappr-public.c.new    2008-08-21 14:50:00.148804008 +0530
@@ -42,7 +42,8 @@
  */

 #include "ldappr-int.h"
-#include <private/pprio.h>
+typedef PRInt32 PROsfd;
+NSPR_API(PRFileDesc *) PR_ImportTCPSocket(PROsfd osfd);

 /*
  * Function: prldap_init().
this won't be needed after this bug gets fixed
https://bugzilla.mozilla.org/show_bug.cgi?id=453375
Depends on: 453375
Since NSS bug is fixed, this is no longer necessary. Marking this as "RESOLVED" and "WONT FIX".
Status: UNCONFIRMED → RESOLVED
Closed: 16 years ago
OS: Other → All
Hardware: Other → All
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.