Open Bug 285978 Opened 20 years ago Updated 12 years ago

C SDK fails to build: nsldappr32.def - syntax error in "VERSION"

Categories

(Directory :: LDAP C SDK, defect)

x86
Windows XP
defect
Not set
major

Tracking

(Not tracked)

People

(Reporter: BenB, Assigned: mcs)

Details

(Keywords: regression)

Attachments

(3 files)

1. cvs co -r MOZILLA_1_7_BRANCH mozilla/client.mk; cd mozilla; makie -f client.mk checkout 2. cd ..; mkdir opt; cd opt; ../mozilla/configure/; make (no mozconfig) cmd /c perl ../../../../../../mozilla/directory/c-sdk/ldap/build/genexports.pl Win32 Standard ../../../../../../mozilla/directory/c-sdk/ldap/libraries/libprldap/libprldap.ex 5.0 50 > ../../../../../../mozilla/directory/c-sdk/ldap/libraries/libprldap/../msdos/winsock/nsldappr32.def ======= making ./nsldappr32v50.dll sh ../../../../../../mozilla/directory/c-sdk/config/cygwin-wrapper link /DEBUG /nologo /MAP /DLL /PDB:NONE /DEBUGTYPE:BOTH /SUBSYSTEM:CONSOLE wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib rpcrt4.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib c:/src/mozilla/moz-svk/opt/dist/lib/nsldap32v50.lib c:/src/mozilla/moz-svk/opt/dist/lib/plc4.lib c:/src/mozilla/moz-svk/opt/dist/lib/plds4.lib c:/src/mozilla/moz-svk/opt/dist/lib/nspr4.lib /out:"nsldappr32v50.dll" ./ldappr-dns.obj ./ldappr-error.obj ./ldappr-io.obj ./ldappr-public.obj ./ldappr-threads.obj /DEF:../../../../../../mozilla/directory/c-sdk/ldap/libraries/libprldap/../msdos/winsock/nsldappr32.def wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib rpcrt4.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib c:/src/mozilla/moz-svk/opt/dist/lib/nsldap32v50.lib c:/src/mozilla/moz-svk/opt/dist/lib/plc4.lib c:/src/mozilla/moz-svk/opt/dist/lib/plds4.lib c:/src/mozilla/moz-svk/opt/dist/lib/nspr4.lib ../../../../../../mozilla/directory/c-sdk/ldap/libraries/libprldap/../msdos/winsock/nsldappr32.def : fatal error LNK1118: syntax error in "VERSION" statement LINK : fatal error LNK1141: failure during build of exports file make[5]: *** [nsldappr32v50.dll] Error 117 make[5]: Leaving directory `/cygdrive/c/src/mozilla/moz-svk/opt/directory/c-sdk/ldap/libraries/libprldap' System is WinXP with VC++ 6 and known to build Mozilla 1.7.2/1.7.3.
This is strange. I am not aware of any recent changes to the mozilla/directory code on MOZILLA_1_7_BRANCH. Please attach a copy of the generated mozilla/directory/c-sdk/ldap/libraries/msdos/winsock/nsldappr32.def file.
This is the file content after running make. It gets rewritten in the source dir (which is a bug in itself).
That's how it is before running make.
I did not create the autoconf-based build for mozilla/directory/c-sdk, but I am pretty sure that genexports.pl script is not supposed to be used on Windows. I do not have a Windows build available to try this myself on, but mozilla.org's builds do not seem to run genexports.pl, e.g., http://tinderbox.mozilla.org/showlog.cgi?log=Mozilla1.7/1110981660.29060.gz&fulltext=1 So what is different about your build procedure?
Attached file build log extract
I pulled a fresh tree and followed your instructions (using VC 6 which is what I have installed also). The build got past the mozilla/directory portion of the build without errors (it failed later in the mozilla/jpeg code because I am missing the Processor Pack, but that is not relevant to this bug). So I am puzzled why it does not work for you.
ARG I realized what's up. I made the checkout on Linux. (I didn't mention it in my initial description, because I didn't even realize it, it's a matter of course for me, I did it since years without problems. Sorry for forgetting to mention it.) If I make the checkout on Windows, it works. So, the make -f client.mk checkout script is broken. I need that to transfer a tarball from Linux to Windows. Or to revision control outside cvs.mozilla.org.
Attachment #177530 - Attachment is patch: true
Attachment #177529 - Attachment is patch: true
Attachment #177530 - Attachment is patch: false
Attachment #177529 - Attachment is patch: false
It almost seems like part of the mozilla/directory/c-sdk configure was executed on Linux before you moved the files to Windows. Is that possible? I don't think the checkout procedure is different between platforms, but I am not 100% sure.
hm, I'm opretty sure I didn't run configure on the most recent tarball (and bash_history confirms). If anything, it might be the other way around: the tarballs that do work might have run configure on Linux, and the one breaking did not.
I'm not sure anymore that Windows vs. Linux is the problem. I spent a full day tryign to narrow down, without much success. The fact that it writes into the source dir while building doesn't make things easier. I also used -kk on some checkouts. I don't think on these, but mentioning just in case.
*sigh* Seems like the last modified time is a factor, too. Presumably, the makefile decides based on that, if to regenerate it. The version I have before building (which I check out from CVS) is just fine. Only if the makefile decides to regenerate it does it get malformed. That's what made my tracking down the problem so hard, because the source code version that works and the version that doesn't is *identical* in content, so |diff| shows nothing. So, the workaround is probably to just comment out that stupid genexports.pl. Marking the file readonly doesn't work (that was one of the first things I tried), because the build system then bails because it insists on writing it. Seems like my initial intuition was right and that would otherwise have worked. As mentioned in comment 2, the Makefile rule is wrong anyways, because the build is not allowed to change the source dir (if using objdir, as I do).
You are right, changing the source tree is an annoying thing to do. I guess the genexports command is not executed in most cases because the generated files checked into CVS are newer than the libldap.ex files, etc. On most platforms, the generated files are not checked into CVS at all; Win32 is an exception because in the distant past genexports did not work on Win32 (apparently, it is not working correctly for you). Dan, do you remember anything about this issue from when you worked on the autoconf-based build for mozilla/directory/c-sdk?
For the record, if you run into this, the immediate workaround is: In the source: 1. restore directory/c-sdk/ldap/libraries/msdos/winsock/nsldappr32.def (the failed build overwrote and horked it) 2. touch directory/c-sdk/ldap/libraries/msdos/winsock/nsldappr32.def (that's a cygwin command; changes the last modification time to now)
I don't remember the details of this, no. Is the right thing to do here to fix genexports to work on all platforms, and then cause it to always generate the files into the objdirs (and also removed any pregenerated ones from CVS)?
Any update on this?
I vote for making genexports.pl work on all platforms if that is easy (should be). I don't have time to work on that right now though.
I'm currently hitting this bug trying to build Thunderbird on windows. Ben's work around is not working for me. Any other suggestions on how to get this working? Below are my build errors: c:/builds/rklein/trunk/mozilla/directory/c-sdk/ldap/libraries/libldap/../msdos/winsock/nsldap32.def(1) : warning LNK4017: <<<<<<< statement not supported for the target platform; ignored c:/builds/rklein/trunk/mozilla/directory/c-sdk/ldap/libraries/libldap/../msdos/winsock/nsldap32.def(3) : fatal error LNK1118: syntax error in 'VERSION' statement LINK : fatal error LNK1141: failure during build of exports file
Try removing the .def files in msdos/winsock
Is this working now?
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: