Closed Bug 8569 Opened 27 years ago Closed 27 years ago

"make" dies because of shared library problem under Sol2.6

Categories

(SeaMonkey :: Build Config, defect, P3)

Sun
Solaris

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: tar, Assigned: briano)

Details

I pulled down mozilla-5.0-M6.tar.gz and updated it from CVS as instructed. In order to get configure to complete properly I have to invoke it as: env LD_LIBRARY_PATH="/usr/local/lib" ./configure Otherwise, it can't link gtk correctly (it'd be swell if configure "knew" about adding -L$path_to_libgtk_and_friends under Solaris for its tests). However, when I try to make: gmake it compiles a bunch of stuff but dies here: Creating _xpidlgen ../../dist/./bin/xpidl -m header -w -I ../../dist/idl -I. -o _xpidlgen/nsrootidl nsrootidl.idl ld.so.1: ../../dist/./bin/xpidl: fatal: libglib-1.2.so.0: open failed: No such file or directory gmake[2]: *** [_xpidlgen/nsrootidl.h] Killed gmake[2]: Leaving directory `/usr/local/src/mozilla/xpcom/idl' Solaris needs to bring back ld.so.cache. Trying again: env LD_LIBRARY_PATH="/usr/local/lib" LD_RUN_PATH="/usr/local/lib" gmake it dies here: rm -f jsautocfg.h ./jscpucfg > jsautocfg.h ld.so.1: ./jscpucfg: fatal: libplds3.so: open failed: No such file or directory Killed gmake[2]: *** [jsautocfg.h] Error 137 gmake[2]: Leaving directory `/usr/local/src/mozilla/js/src' tar@fubar(1063)% ldd js/src/jscpucfg libplds3.so => (file not found) libplc3.so => (file not found) libnspr3.so => (file not found) libpthread.so.1 => /usr/lib/libpthread.so.1 ... These shared libraries are buried under another part of the mozilla tree in ./dist/lib. I don't understand how this would work for anyone: the link command for jscpucfg doesn't specify any -R options: gcc -o jscpucfg.o -c -Wp,-MD,.deps/jscpucfg.pp -include ../../config-defs.h -g -fPIC -DDEBUG -UNDEBUG -DDEBUG_tar -DTRACING -DOSTYPE=\"SunOS5\" -DSingleSignon -DCookieManagement -DClientWallet -DJS_USE_SAFE_ARENA -I../../dist/./include -I../../dist/include -I../../include -I. -I/usr/openwin/include jscpucfg.c gcc -o jscpucfg jscpucfg.o -lplds3 -lplc3 -lnspr3 -lpthread -lm -lposix4 -ldl -lnsl -lsocket -L../../dist/./bin -L../../dist/./lib -ll -lw -lposix4 -lintl -lelf -lnsl -lsocket -lresolv -ldl -lm so the link finds ./dist/lib but doesn't encode that path in the jscpucfg executable, so the shared libraries in that directory won't be found at dynamic link time. This works around it: env LD_LIBRARY_PATH="/usr/local/lib:`pwd`/dist/lib" LD_RUN_PATH="/usr/local/lib" gmake Also, when the invocation of jsspucfg dies on invocation it creates jsautocfg.h because of the shell redirection, but that file is left empty. Subsequent makes don't complete properly because as far as make is concerned the jsautocfg.h file is up to date. Can the Makefile be written so this auto generated file is removed if the jscpucfg command fails?
Status: NEW → ASSIGNED
I suspect you'll have fewer problems with M7 or the current CVS tree, but you'll probably still have to set LD_LIBRARY_PATH in any case (I do this for my Solaris 2.6 Tinderbox builds. If you build NSPR separately, then you have no choice but to set LD_LIBRARY_PATH to point to it. If you let configure decide to build nspr for you, then you shouldn't need to do anything special. Your suggestion wrt jsautocfg.h is a good one. I could probably have it build a temporary file (jsautocfg.tmp?), and if successful mv it to jsautocfg.h. I'll look into it. (Feel free to test this idea for me... ;-)
Status: ASSIGNED → RESOLVED
Closed: 27 years ago
Resolution: --- → FIXED
Target Milestone: M8
I've checked in a change to js/src/Makefile.in to fix the problem you described wrt zero-length jsautocfg.h. The fix is in rev 3.27. Please give it a try and let me know if it does what you wanted. The rest of this bug requires that LD_LIBRARY_PATH be set. There's nothing I can do about that.
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.