Closed Bug 124244 Opened 23 years ago Closed 23 years ago

switch builds to use LDAP C SDK 5.0

Categories

(SeaMonkey :: Build Config, defect, P1)

defect

Tracking

(Not tracked)

VERIFIED FIXED
mozilla1.0

People

(Reporter: dmosedale, Assigned: dmosedale)

References

Details

(Whiteboard: [ADT2])

Attachments

(3 files, 14 obsolete files)

2.69 KB, patch
sfraser_bugs
: review+
Bienvenu
: superreview+
Details | Diff | Splinter Review
6.46 KB, patch
sfraser_bugs
: review+
Bienvenu
: superreview+
Details | Diff | Splinter Review
23.38 KB, patch
dmosedale
: review+
dmosedale
: superreview+
Details | Diff | Splinter Review
We need this for SSL-LDAP, among other things.
Status: NEW → ASSIGNED
Depends on: 122115
Using this patch requires first applying the patch in 122115, and then this
one.  After you apply this one, you _must_ run autoconf to regenerate configure
and then reconfigure.
Forgot client.mk changes.  Also my previous description of how to use was
wrong, a bit of bootstrapping will be required, since the 5.0 sources have to
be pulled from cvs before one can apply the patch in bug 122115.
Attachment #68375 - Attachment is obsolete: true
this are simple changes are far as to the automation, but we're pulling a new
ldap sdk branch.  How big of a change is the new SDK? Do we need to carpool this
change?
Depends on: 106627
Keywords: nsbeta1
OS: Linux → All
Hardware: PC → All
This is still a short ways off.  It's a non-trivial change, overall. 
Conceivably, things may break, especially for odd platforms.  However, it's not
clear to me that a carpool actually buys us anything.  Only a few people check
in code which uses the LDAP functionality, and so it's quite unlikely that any
breakage that happens here would be easier to debug because fewer people were
checking in.
we should do it as a carpool anyway with builds after the change, just so we can
isolate any problems to the carpool rather than wondering if it was the new sdk
or some other change that is causing a problem.  Also, by putting it on the
branch landing page and sending out the notifications to mozilla-builds and
mozilla-seamonkey, we can be sure people know about it ahead of time.

Please put an entry on the branch landing page so we have a way of tracking the
progress and can estimate the landing time.  Also, keep in mind 0.9.9 freezes in
one week if you want to get this in before then.
Moving to 1.0 because that's when LDAP over SSL is scheduled, but if it gets in
earlier that works, too.
Keywords: nsbeta1nsbeta1+
Priority: -- → P1
Target Milestone: --- → mozilla1.0
OK, this patch now includes the changes necessary to work on windows as well as
unix.
Attachment #68379 - Attachment is obsolete: true
Whoops, the last patch contained _only_ the windows changes.  This patch
contains both windows and unix changes.
Attachment #70586 - Attachment is obsolete: true
heads up to dmose, I think that there might be some build order issues.

I did a clobber_all build_all (with these patches) and my build fails.

c:\moztools\bin\gmake.exe[5]: Entering directory `c:/builds/tip/mozilla/director
y/c-sdk/WIN32_D.OBJ/ldap/libraries/libssldap'
cl -Foclientinit.obj -c     -W3 -nologo -GF -Gy -MDd -Od -Z7   -UNDEBUG  -DMOZIL
LA_CLIENT=1 -DDEBUG=1 -DDEBUG_Administrator=1 -DXP_PC=1 -DWIN32=1 -D_WINDOWS=1 -
D_DEBUG=1 -DWIN95=1 -D_PR_GLOBAL_THREADS_ONLY=1 -D_X86_=1  -DFORCE_PR_LOG -DUSE_
WAITPID -DNEEDPROTOS -DLDAP_DEBUG   -DNET_SSL  -DNO_LIBLCACHE -DLDAP_REFERRALS
   -DNS_DOMESTIC  -Ic:/builds/tip/mozilla/dist/public/ldap -I../../../../ldap/in
clude -Ic:/builds/tip/mozilla/dist/./include -Ic:/builds/tip/mozilla/dist/includ
e -Ic:/builds/tip/mozilla/dist/public/security -Ic:/builds/tip/mozilla/dist/publ
ic/nss -Ic:/builds/tip/mozilla/dist/include/nspr  ../../../../ldap/libraries/lib
ssldap/clientinit.c
clientinit.c
../../../../ldap/libraries/libssldap/clientinit.c(37) : fatal error C1083: Canno
t open include file: 'cert.h': No such file or directory
c:\moztools\bin\gmake.exe[5]: *** [clientinit.obj] Error 2
c:\moztools\bin\gmake.exe[5]: Leaving directory `c:/builds/tip/mozilla/directory
/c-sdk/WIN32_D.OBJ/ldap/libraries/libssldap'
c:\moztools\bin\gmake.exe[4]: *** [install] Error 2
c:\moztools\bin\gmake.exe[4]: Leaving directory `c:/builds/tip/mozilla/directory
/c-sdk/WIN32_D.OBJ/ldap/libraries'
c:\moztools\bin\gmake.exe[3]: *** [install] Error 2
c:\moztools\bin\gmake.exe[3]: Leaving directory `c:/builds/tip/mozilla/directory
/c-sdk/WIN32_D.OBJ/ldap'
c:\moztools\bin\gmake.exe[2]: *** [install] Error 2
c:\moztools\bin\gmake.exe[2]: Leaving directory `c:/builds/tip/mozilla/directory
/c-sdk/WIN32_D.OBJ'
c:\moztools\bin\gmake.exe[1]: *** [all] Error 2
c:\moztools\bin\gmake.exe[1]: Leaving directory `c:/builds/tip/mozilla/directory
/c-sdk/WIN32_D.OBJ'
gmake: *** [build_all] Error 2
NMAKE : fatal error U1077: 'gmake' : return code '0x2'
Stop.

the build works fine if security is built first.

but, for mozilla I don't think we need to build libssldap.  perhaps things are 
ok as they are, we just need to selectively build only the libraries we really 
need.
this might be enough to fix it for now:

-build_all: build_nspr build_ldapcsdk build_seamonkey 
+build_all: build_nspr build_seamonkey build_ldapcsdk

trying that now.
yes,

build_all: build_nspr build_seamonkey build_ldapcsdk

is the way to go.

cc peterv, in case this information affects his mac build work for LDAP SDK 5.0
So after talking to cls and sspitzer, it's been determined that if the LDAP C
SDK depends on NSS, some non-trivial changes will have to be made to both the
nmake and autoconf buildsystems.  As it turns out, though, for the browser, we
don't libssldap, because we're doing all of our crypto using PSM.  So this
patch adds
an option to configure to allow the caller to build the LDAP C SDK without NSS,
and thus it doesn't build libssldap at all.
In combination with the LDAP C SDK patch here, this should fix the build order
problems.  Additionally, it uses libprldap to install NSPR for low-level
functions, and it updates the packager files for windows and unix.
Attachment #70635 - Attachment is obsolete: true
Comment on attachment 71987 [details] [diff] [review]
patch to allow the LDAP C SDK to build without NSS

r=cls
Attachment #71987 - Flags: review+
Comment on attachment 71987 [details] [diff] [review]
patch to allow the LDAP C SDK to build without NSS

Fix checked in.
Attachment #71987 - Attachment is obsolete: true
Fixed a forgotten makefile.win, and changed a reference from bash to sh, on
cls' recommendation.
Attachment #72009 - Attachment is obsolete: true
Keywords: mozilla1.0
Attached patch Patch for HP-UX (obsolete) β€” β€” Splinter Review
Basically the Makefile had an ifdef AIX that was the same as the ifdef Linux 
and HP-UX needed the same.  So instead of continuing the ifdef <OS_ARCH>
I used the ifneq $filter technigue to combine several OS_ARCH triggers
that do the same thing into a single if
Attached patch patch to v5 C SDK for Mac (obsolete) β€” β€” Splinter Review
Includes the changes for the Mozilla Mac build scripts.
Comment on attachment 72158 [details] [diff] [review]
patch to pull and build Mozilla with v5 CSK, v6

r=sspitzer

how did you confirm that we were indeed using NSPR?

also, did you test both autocomplete and LDAP addressbook searches?
Attachment #72158 - Flags: review+
Comment on attachment 73207 [details] [diff] [review]
Patch for HP-UX

r=cls
Attachment #73207 - Flags: review+
Comment on attachment 73207 [details] [diff] [review]
Patch for HP-UX

jdunn's HP-UX patch checked in to ldapcsdk_branch_50.
Attachment #73207 - Attachment is obsolete: true
Great work on the patch for Mac. Just a couple of comments:

1) Why remove exit 0 from the replace.pl script? I guess it just is not needed?

2) The changes that remove the OS socket code are all #ifdef macintosh, but I
think they might be useful for other platforms someday too. Can we change the
code in liblber/io.c and libldap/os-ip.c to use a more general #ifdef such as
#ifdef NSLDAPI_AVOID_OS_SOCKETS or something similar? For now, we would only
define that on the Mac.

I am not qualified to review the XML CodeWarrior project file or the
mozilla/build/mac changes.
sspitzer asks:

> how did you confirm that we were indeed using NSPR?

The most important test is that on the Macintosh, the OS-native socket code is
completely stubbed out.  So the only possible way it could work at all is if the
XP code for enabling NSPR were working.  And it does work.  On Linux, I've been
able to use your SSL-LDAP proto-patch which depends on NSPR working as well.

> also, did you test both autocomplete and LDAP addressbook searches?

Yes.
mcs asks:

> 1) Why remove exit 0 from the replace.pl script? I guess it just is not
> needed?

I talked to peterv about this, and his answer was this: replace.pl is called
from the main MacPerl build script, and one of the vagaries of MacPerl is that
it calls other scripts directly in the same Perl script-space, rather than
forking a separate perl interpreter for the script.

> 2) The changes that remove the OS socket code are all #ifdef macintosh, but I
> think they might be useful for other platforms someday too. Can we change the
> code in liblber/io.c and libldap/os-ip.c to use a more general #ifdef such as
> #ifdef NSLDAPI_AVOID_OS_SOCKETS or something similar? For now, we would 
> only define that on the Mac.

I've got this change made locally on my Mac.  I will upload an updated patch
with it shortly.  I've chosen to define NSLDAPI_AVOID_OS_SOCKETS in
libraries/macintosh/ldap-macos-defs.h.

> I am not qualified to review the XML CodeWarrior project file or the
> mozilla/build/mac changes.

No problem; when I upload the latest mac changes, I'm gonna split peterv's patch
into two: one patch for the C SDK itself (including the XML changes, which I'll
find someone else to review), and one for the Mozilla build glue.
Attached patch patch to v5 C SDK for Mac, v2 (obsolete) β€” β€” Splinter Review
OK, here's the updated C SDK patch.  It addresses mcs' request (actually I
ended up having to put the define of NSLDAPI_AVOID_OS_SOCKETS in ldap-macos.h).
 It also updates the MANIFEST to make the proper header file links to dist.
Attachment #73525 - Attachment is obsolete: true
Attached patch patch to V5 C SDK for Mac, v3 (obsolete) β€” β€” Splinter Review
Whoops... extraneous change included in the last patch.
Attachment #74219 - Attachment is obsolete: true
This is the build glue for Mozilla.
Fixed a build ordering issue for clobber builds: need to ensure that
ldap-standard.h is generated before attempting to create a link to dist.
Attachment #74227 - Attachment is obsolete: true
No longer build nsLDAPConnectionCallbacks.c, since the SDK now provides all the
necessary code.
Attached patch patch to V5 C-SDK for Mac, v4 (obsolete) β€” β€” Splinter Review
Need to move ber_error_print prototype in lber-int.h outside of
NSLBERI_LBER_INT_FRIEND check so that it gets prototyped for all builds,
including non-DEBUG.
Attachment #74226 - Attachment is obsolete: true
r=mcs for the "V5 C-SDK for Mac, v4 patch", with one comment: I don't see why
the ber_error_print prototype in lber-int.h needs to be moved. The
NSLBERI_LBER_INT_FRIEND macro is always defined by ldap-int.h before it includes
lber-int.h.
mcs: right, that's the problem.  In the current code, ber_error_print only gets
prototyped inside an "ifndef NSLBERI_LBER_INT_FRIEND" clause.
Dan: got it. I misread the ifndef as a ifdef (doh!) r=mcs, no complaints.
Comment on attachment 74281 [details] [diff] [review]
patch to pull and build Mozilla on Mac with b5 C-SDK, v2

>Index: mac/build_scripts/MozillaBuildList.pm
>===================================================================
>RCS file: /cvsroot/mozilla/build/mac/build_scripts/MozillaBuildList.pm,v
>retrieving revision 1.182
>diff -u -5 -r1.182 MozillaBuildList.pm
>--- mac/build_scripts/MozillaBuildList.pm	8 Mar 2002 22:33:40 -0000	1.182
>+++ mac/build_scripts/MozillaBuildList.pm	15 Mar 2002 04:53:42 -0000
>@@ -832,10 +832,30 @@
>     InstallFromManifest(":mozilla:extensions:xml-rpc:idl:MANIFEST_IDL",                "$distdirectory:idl:");
> 
>     #LDAP
>     if ($main::options{ldap})
>     {
>+        # Create the ldap-standard.h file from the template
>+        #
>+        my($template) = ":mozilla:directory:c-sdk:ldap:include:ldap-standard-tmpl.h";
>+        my($template_modtime) = GetFileModDate($template);
>+        my($header) = ":mozilla:directory:c-sdk:ldap:include:ldap-standard.h";
>+        my($header_modtime) = (-e $header ? GetFileModDate($header) : 0);
>+        if ($template_modtime > $header_modtime) {
>+            open(STDIN, "<$template");
>+            open(STDOUT, ">$header");
>+            @ARGV = ("LDAP_VENDOR_NAME=mozilla.org", "LDAP_VENDOR_VERSION=500");
>+            do ":mozilla:directory:c-sdk:ldap:build:replace.pl";
>+            if ($@) {
>+                close(STDOUT);
>+                close(STDIN);
>+                die "Error: can't create ldap-standard.h from ldap-standard-tmpl.h";
>+            }
>+            close(STDOUT);
>+            close(STDIN);
>+        }

How is this stuff done on other platforms? Can we share some perl XP here?

>         InstallFromManifest(":mozilla:directory:c-sdk:ldap:include:MANIFEST",      		"$distdirectory:directory:");
>         InstallFromManifest(":mozilla:directory:xpcom:base:public:MANIFEST",       		"$distdirectory:directory:");
>         InstallFromManifest(":mozilla:directory:xpcom:base:public:MANIFEST_IDL",   		"$distdirectory:idl:");
>         InstallFromManifest(":mozilla:xpfe:components:autocomplete:public:MANIFEST_IDL",	"$distdirectory:idl:");
>     }
>Index: mac/build_scripts/MozillaCheckoutList.txt
...
>-DirectorySDKSourceC,    LDAPCSDK_40_BRANCH
>+DirectorySDKSourceC,    ldapcsdk_branch_50

Fine.
Comment on attachment 74281 [details] [diff] [review]
patch to pull and build Mozilla on Mac with b5 C-SDK, v2

r=sfraser
Attachment #74281 - Flags: review+
Comment on attachment 74284 [details] [diff] [review]
Updated Mac project file for LDAP XPCOM SDK, v1

r=sfraser
Attachment #74284 - Flags: review+
Comment on attachment 74281 [details] [diff] [review]
patch to pull and build Mozilla on Mac with b5 C-SDK, v2

Mac C-SDK patch checked in on ldapcsdk_branch_50.
Attachment #74281 - Attachment is obsolete: true
Comment on attachment 74281 [details] [diff] [review]
patch to pull and build Mozilla on Mac with b5 C-SDK, v2

Whoops, marked the wrong attachment obsolete.
Attachment #74281 - Attachment is obsolete: false
Attachment #74285 - Attachment is obsolete: true
Depends on: 131447
Comment on attachment 72158 [details] [diff] [review]
patch to pull and build Mozilla with v5 CSK, v6

Minor nit; we use 4 space indentation in configure.in, not 2.  Fix that &&
r=cls
Comment on attachment 74281 [details] [diff] [review]
patch to pull and build Mozilla on Mac with b5 C-SDK, v2

sr=bienvenu
Attachment #74281 - Flags: superreview+
Comment on attachment 74284 [details] [diff] [review]
Updated Mac project file for LDAP XPCOM SDK, v1

sr=bienvenu
Attachment #74284 - Flags: superreview+
Updated to CVS tip & fixed cls' indentation issue.
Attachment #72158 - Attachment is obsolete: true
Comment on attachment 76144 [details] [diff] [review]
patch to pull and build Mozilla with v5 C-SDK, v7

Carrying forward r=cls,sspitzer, sr=bienvenu.
Attachment #76144 - Flags: superreview+
Attachment #76144 - Flags: review+
Fix more merge conflicts with the cvs tip.
Attachment #76144 - Attachment is obsolete: true
Comment on attachment 76147 [details] [diff] [review]
patch to pull and build Mozilla with v5 C-SDK, v8

carrying forward r=sspitzer,cls; sr=bienvenu
Attachment #76147 - Flags: superreview+
Attachment #76147 - Flags: review+
I just noticed that we check in mozilla/configure for LCHOWN and if
found we set (there) HAVE_LCHOWN which shows up in config/autoconf.mk
as -DHAVE_LCHOWN.

However, in directory/c-sdk/config/nsinstall.c there is a
#define HAVE_LCHOWN
followed by an #if...  #undef HAVE_LCHOWN... #endif

The problem is that SOME compilers won't let you redefine a previously
defined <thing>.  I am not 100% sure of the solution because I am
not sure if ldap needs to remain a separate entity... but as a 
minimum can we add a 
#ifndef HAVE_LCHOWN
#define HAVE_LCHOWN
#endif 
in nsinstall.c?

jdunn: config/autoconf.mk is not used by the C-SDK.  It has it's own version in
directory/c-sdk/config/autoconf.mk.  So these shouldn't interfere with each other.
doh - I knew it was getting defined but guessed at the wrong place... 

It looks like directory/c-sdk/configure 
also checks for lchown  (-> HAVE_LCHOWN)
line 1849 of directory/c-sdk/configure.in

Seeing as how ldap5's configure is checking for lchown 
(and hence defining HAVE_LCHOWN) can we remove the 
Define & undef of HAVE_LCHOWN from nsinstall.c?

jdunn: I just checked in your original suggestion on the branch.  Right now we
need to support both autoconf and non-autoconf builds, so it's the best
compromise.  Thanks for the fix.
Attachment #76147 - Attachment description: patch to pull and build Mozilla on Mac with v5 C-SDK, v8 → patch to pull and build Mozilla with v5 C-SDK, v8
Comment on attachment 74281 [details] [diff] [review]
patch to pull and build Mozilla on Mac with b5 C-SDK, v2

a=asa (on behalf of drivers) for checkin to the 1.0 trunk
Attachment #74281 - Flags: approval+
Comment on attachment 74284 [details] [diff] [review]
Updated Mac project file for LDAP XPCOM SDK, v1

a=asa (on behalf of drivers) for checkin to the 1.0 trunk
Attachment #74284 - Flags: approval+
Attachment #76147 - Flags: approval+
Comment on attachment 76147 [details] [diff] [review]
patch to pull and build Mozilla with v5 C-SDK, v8

a=asa (on behalf of drivers) for checkin to the 1.0 trunk
Patches checked in, with the tiny tweak that the checkin versions use the newly
minted stable ldapcsdk_50_client_branch, rather than the old development branch
like the patches here did.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Discussed in Mail News bug meeting. Decided to [ADT2} this bug.
Whiteboard: [ADT2]
Please see bug 126462 for compiler warnings that were introduced on the new branch.
Verifying (rs)
Status: RESOLVED → VERIFIED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: