Closed Bug 299293 Opened 20 years ago Closed 20 years ago

build failure in mozilla/security/nss/lib/ssl (_FC_GetFunctionList referenced from libnss3 expected to be defined in libsoftokn3.dylib) [Mac X11]

Categories

(Firefox Build System :: General, defect)

PowerPC
macOS
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED INVALID

People

(Reporter: niederstrasser, Unassigned)

Details

User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 Build Identifier: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 Building from the trunk stopped working about 2 (3?) weeks ago in mozilla/security/nss/lib/ssl. Using a trunk tree from before then, everything compiled fine. I have pasted the error message below. Things to note: I'm doing this for OS X under X11/gtk2. I have built 0.10 through 1.0.4 for the Fink project successfully using the same method, and I had a trunk build working until about 2 or 3 weeks ago. During ./configure, I have /Users/nieder set as my prefix. When things were working, the libraries ended up under /Users/nieder/lib/firefox, but the error now seems to happen in part because it is expecting to find the library directly in /Users/nieder. I'm using Tiger.1 w/ Xcode 2.1. gcc is set to 4.0, but I get the same error when using 3.3. Reproducible: Always Steps to Reproduce: Actual Results: The error message: ****************** rm -f Darwin8.1.0_OPT.OBJ/libssl.a ar cr Darwin8.1.0_OPT.OBJ/libssl.a Darwin8.1.0_OPT.OBJ/emulate.o Darwin8.1.0_OPT.OBJ/prelib.o Darwin8.1.0_OPT.OBJ/ssl3con.o Darwin8.1.0_OPT.OBJ/ssl3gthr.o Darwin8.1.0_OPT.OBJ/sslauth.o Darwin8.1.0_OPT.OBJ/sslcon.o Darwin8.1.0_OPT.OBJ/ssldef.o Darwin8.1.0_OPT.OBJ/sslenum.o Darwin8.1.0_OPT.OBJ/sslerr.o Darwin8.1.0_OPT.OBJ/sslgathr.o Darwin8.1.0_OPT.OBJ/sslmutex.o Darwin8.1.0_OPT.OBJ/sslnonce.o Darwin8.1.0_OPT.OBJ/sslreveal.o Darwin8.1.0_OPT.OBJ/sslsecur.o Darwin8.1.0_OPT.OBJ/sslsnce.o Darwin8.1.0_OPT.OBJ/sslsock.o Darwin8.1.0_OPT.OBJ/ssltrace.o Darwin8.1.0_OPT.OBJ/sslver.o Darwin8.1.0_OPT.OBJ/authcert.o Darwin8.1.0_OPT.OBJ/cmpcert.o Darwin8.1.0_OPT.OBJ/nsskea.o Darwin8.1.0_OPT.OBJ/sslinfo.o Darwin8.1.0_OPT.OBJ/unix_err.o ranlib: file: Darwin8.1.0_OPT.OBJ/libssl.a(ssltrace.o) has no symbols ranlib Darwin8.1.0_OPT.OBJ/libssl.a ranlib: file: Darwin8.1.0_OPT.OBJ/libssl.a(ssltrace.o) has no symbols grep -v ';+' ssl.def | grep -v ';-' | sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' -e 's,^,_,' > Darwin8.1.0_OPT.OBJ/ssl.def rm -f Darwin8.1.0_OPT.OBJ/libssl3.dylib gcc -arch ppc -dynamiclib -compatibility_version 1 -current_version 1 -install_name /Users/nieder/libssl3.dylib -headerpad_max_install_names -o Darwin8.1.0_OPT.OBJ/libssl3.dylib Darwin8.1.0_OPT.OBJ/emulate.o Darwin8.1.0_OPT.OBJ/prelib.o Darwin8.1.0_OPT.OBJ/ssl3con.o Darwin8.1.0_OPT.OBJ/ssl3gthr.o Darwin8.1.0_OPT.OBJ/sslauth.o Darwin8.1.0_OPT.OBJ/sslcon.o Darwin8.1.0_OPT.OBJ/ssldef.o Darwin8.1.0_OPT.OBJ/sslenum.o Darwin8.1.0_OPT.OBJ/sslerr.o Darwin8.1.0_OPT.OBJ/sslgathr.o Darwin8.1.0_OPT.OBJ/sslmutex.o Darwin8.1.0_OPT.OBJ/sslnonce.o Darwin8.1.0_OPT.OBJ/sslreveal.o Darwin8.1.0_OPT.OBJ/sslsecur.o Darwin8.1.0_OPT.OBJ/sslsnce.o Darwin8.1.0_OPT.OBJ/sslsock.o Darwin8.1.0_OPT.OBJ/ssltrace.o Darwin8.1.0_OPT.OBJ/sslver.o Darwin8.1.0_OPT.OBJ/authcert.o Darwin8.1.0_OPT.OBJ/cmpcert.o Darwin8.1.0_OPT.OBJ/nsskea.o Darwin8.1.0_OPT.OBJ/sslinfo.o Darwin8.1.0_OPT.OBJ/unix_err.o -L/Users/nieder/src/mozilla/dist/lib/ -lnss3 -lplc4 -lplds4 -lnspr4 -dylib_file /Users/nieder/lib/firefox/libsoftokn3.dylib:/Users/nieder/src/mozilla/dist/lib/libsoftokn3.dylib ld: warning can't open dynamic library: /Users/nieder/libsoftokn3.dylib (checking for undefined symbols may be affected) (No such file or directory, errno = 2) ld: Undefined symbols: _FC_GetFunctionList referenced from libnss3 expected to be defined in /Users/nieder/libsoftokn3.dylib _NSC_GetFunctionList referenced from libnss3 expected to be defined in /Users/nieder/libsoftokn3.dylib _NSC_ModuleDBFunc referenced from libnss3 expected to be defined in /Users/nieder/libsoftokn3.dylib /usr/bin/libtool: internal link edit command failed make[4]: *** [Darwin8.1.0_OPT.OBJ/libssl3.dylib] Error 1 make[4]: Leaving directory `/Users/nieder/src/mozilla/security/nss/lib/ssl'
Something's not right. (Obviously.) I see no mention of @executable_path anywhere. The standard make machinery for nss on the Mac puts @executable_path in. Do you have any mention of @executable_path in security/coreconf/Darwin.mk?
The relevant makefile code is in mozilla/security/coreconf/Darwin.mk: 101 # May override this with -bundle to create a loadable module. 102 DSO_LDOPTS = -dynamiclib -compatibility_version 1 -current_version 1 -install_name @executable_path/$(notdir $@) -headerpad_max_install_names $(DARWIN_SDK_LDFLAGS) 103 104 MKSHLIB = $(CC) -arch $(CPU_ARCH) $(DSO_LDOPTS) We need to find out why the argument to -install_name is not @executable_path/libssl3.dylib. It seems that @executable_path is substituted with /Users/nieder.
(In reply to comment #2) > The relevant makefile code is in mozilla/security/coreconf/Darwin.mk: > [snip] > It seems that @executable_path is substituted with /Users/nieder. Yeah, the patch does have several instances of @executable_path changed to /Users/nieder. This used to work up to and including 1.0.4 and some nightlies, but something must have changed in the last couple weeks. I'll check now if restoring those instances of @executable_path fixes the build crash.
You didn't mention you patched your source tree. Given that, I bet that you applied your patch incorrectly after you updated the source tree. In rev. 1.10 of mozilla/security/coreconf/Darwin.mk, the line that you patched (DSO_LDOPTS = ...) is changed. So your old patch file wouldn't apply to rev. 1.10 or later, and would force you to manually apply the patch, hence the possibility of making a mistake. (Note: two or three weeks ago you were using rev. 1.9.)
You should change all instances of @executable_path consistently, to either /Users/nieder or /Users/nieder/lib/firefox. Your build output showed that you changed the instance in mozilla/security/coreconf/Darwin.mk to /Users/nieder but the instance in mozilla/security/nss/lib/ssl/config.mk to /Users/nieder/lib/firefox. Based on what you said in the original bug description, I think /Users/nieder/lib/firefox is the correct one.
Status: UNCONFIRMED → RESOLVED
Closed: 20 years ago
Resolution: --- → INVALID
Component: Build Config → General
Product: Firefox → Firefox Build System
You need to log in before you can comment on or make changes to this bug.