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

RESOLVED INVALID

Status

()

--
critical
RESOLVED INVALID
14 years ago
14 years ago

People

(Reporter: niederstrasser, Unassigned)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

14 years ago
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'

Comment 1

14 years ago
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?

Comment 2

14 years ago
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.
(Reporter)

Comment 3

14 years ago
(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.

Comment 4

14 years ago
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.)

Comment 5

14 years ago
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
Last Resolved: 14 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.