Closed Bug 138532 Opened 19 years ago Closed 19 years ago

NetBSD/i386: Multiple Build Breaks in 1.0.rc1 source

Categories

(NSS :: Libraries, defect, P1)

x86
NetBSD
defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: scott, Assigned: wtc)

Details

Attachments

(1 file)

The fix for bug 135027 was checked in after the 1.0.0 branch was cut, so the
behavior described in that bug still applies to the 1.0.0 branch.  Additionally,
sslmutex.c doesn't compile due to problems with semaphore declarations.

Repro steps:
1. Configure a standard Mozilla build environment on NetBSD/i386 1.5.x.
2. Using the Mozilla 1.0.rc1 source tarball, do a "gmake -f client.mk build"
using the following .mozconfig:

ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --enable-optimize
ac_add_options --enable-crypto
ac_add_options --without-system-nspr
ac_add_options --without-system-jpeg
ac_add_options --without-system-png
ac_add_options --without-system-mng
ac_add_options --without-system-zlib

3. After the first build break, append the following line to your .mozconfig:

ac_add_options --disable-ldap

4. gmake -f client.mk distclean && gmake -f client.mk build

Acutal results:
First build attempt yields the same thing as in bug 135027:

======= making ./libldap50.so
/usr/bin/ld -shared -Wl,-soname,libldap50.so    -o libldap50.so ./abandon.o
./add.o ./bind.o ./cache.o ./charray.o ./charset.o ./compare.o ./compat.o
./control.o ./countvalues.o ./delete.o ./disptmpl.o ./dsparse.o ./error.o
./extendop.o ./free.o ./freevalues.o ./friendly.o ./getattr.o ./getdn.o
./getdxbyname.o ./getentry.o ./getfilter.o ./getoption.o ./getvalues.o
./memcache.o ./message.o ./modify.o ./open.o ./os-ip.o ./proxyauthctrl.o
./psearch.o ./referral.o ./regex.o ./rename.o ./request.o ./reslist.o ./result.o
./saslbind.o ./sbind.o ./search.o ./setoption.o ./sort.o ./sortctrl.o
./srchpref.o ./tmplout.o ./ufn.o ./unbind.o ./unescape.o ./url.o ./utf8.o
./vlistctrl.o
/usr/bin/ld: unrecognized option `-Wl,-soname,libldap50.so'
gmake[6]: *** [libldap50.so] Error 1
gmake[6]: Leaving directory
`/usr/local/src/mozilla/directory/c-sdk/ldap/libraries/libldap'
gmake[5]: *** [export] Error 2
gmake[5]: Leaving directory `/usr/local/src/mozilla/directory/c-sdk/ldap/libraries'
gmake[4]: *** [export] Error 2
gmake[4]: Leaving directory `/usr/local/src/mozilla/directory/c-sdk/ldap'
gmake[3]: *** [export] Error 2
gmake[3]: Leaving directory `/usr/local/src/mozilla/directory/c-sdk'
gmake[2]: *** [ldap] Error 2
gmake[2]: Leaving directory `/usr/local/src/mozilla'
gmake[1]: *** [default] Error 2
gmake[1]: Leaving directory `/usr/local/src/mozilla'
gmake: *** [build] Error 2

Second build attempt fails building sslmutex.c:

gcc -o NetBSD1.5.3_RC1_OPT.OBJ/sslmutex.o -c -O -fPIC -DPIC -Di386 -ansi -Wall
-pipe -DNETBSD -Dunix -DHAVE_STRERROR -DHAVE_BSD_FLOCK -DXP_UNIX -UDEBUG
-DNDEBUG -I/usr/X11R6/include -I/usr/local/src/mozilla/dist/include 
-I../../../../dist/public/security -I../../../../dist/private/security
-I../../../../dist/include -I/usr/local/src/mozilla/dist/include/nspr
-I/usr/local/src/mozilla/dist/include/dbm -I../../../../dist/public/security
-I../../../../dist/public/dbm  sslmutex.c
In file included from sslmutex.c:36:
sslmutex.h:100: semaphore.h: No such file or directory
In file included from sslmutex.c:36:
sslmutex.h:107: syntax error before `sem_t'
sslmutex.c: In function `sslMutex_Init':
sslmutex.c:543: warning: implicit declaration of function `sem_init'
sslmutex.c:543: union has no member named `sem'
sslmutex.c: In function `sslMutex_Destroy':
sslmutex.c:560: warning: implicit declaration of function `sem_destroy'
sslmutex.c:560: union has no member named `sem'
sslmutex.c: In function `sslMutex_Unlock':
sslmutex.c:577: warning: implicit declaration of function `sem_post'
sslmutex.c:577: union has no member named `sem'
sslmutex.c: In function `sslMutex_Lock':
sslmutex.c:594: warning: implicit declaration of function `sem_wait'
sslmutex.c:594: union has no member named `sem'
gmake[5]: *** [NetBSD1.5.3_RC1_OPT.OBJ/sslmutex.o] Error 1
gmake[5]: Leaving directory `/usr/local/src/mozilla/security/nss/lib/ssl'
Fri Apr 19 09:30:34 MDT 2002
cd pkcs12; gmake -j1 libs
gmake[5]: Entering directory `/usr/local/src/mozilla/security/nss/lib/pkcs1

...however, the build doesn't stop on this error.  The build finally bombs out
later when it can't find libssl:

../../config/nsinstall: cannot access ../../dist/lib/libssl3.so: No such file or
directory
gmake[3]: *** [libs] Error 1
gmake[3]: Leaving directory `/usr/local/src/mozilla/security/manager'
gmake[2]: *** [tier_95] Error 2
gmake[2]: Leaving directory `/usr/local/src/mozilla'
gmake[1]: *** [default] Error 2
gmake[1]: Leaving directory `/usr/local/src/mozilla'
gmake: *** [build] Error 2

So, the problems are 1) ldap doesn't build, 2) sslmutex.c won't compile, and 3)
the build doesn't stop on the errors in sslmutex.c

This is the same machine described in bug 135027, only it has been upgraded to
NetBSD 1.5.3_RC1, which doesn't have any significant changes over NetBSD
1.5.3_ALPHA.  Any other needed information, including full build logs, is
available upon request.
Reopening bug 135027 and reassigning this one to the NSS team as I can't check
in the fix.
Assignee: seawood → wtc
Status: UNCONFIRMED → NEW
Component: Build Config → Build
Ever confirmed: true
Product: Browser → NSS
QA Contact: granrose → wtc
Version: other → 3.3.1
Priority: -- → P1
Target Milestone: --- → 3.5
I checked the patch into the tip of NSS and the NSS_CLIENT_TAG
(used by the Mozilla client trunk build).
URL: n/a
Status: NEW → RESOLVED
Closed: 19 years ago
Component: Build → Libraries
Resolution: --- → FIXED
Version: 3.3.1 → 3.4
I just found that there are actually three problems reported in
this bug report.

1) ldap doesn't build.  This is the subject of bug 135027 (reopened).

2) sslmutex.c won't compile.  This is fixed by Chris's patch.

3) The build doesn't stop on the errors in sslmutex.c.  This has
NOT been fixed.  I believe this has to do with the LOOP_OVER_DIRS
make macro in mozilla/security/coreconf/ruleset.mk:

ifdef DIRS
    LOOP_OVER_DIRS      =                                       \
        @for directory in $(DIRS); do                           \
            if test -d $$directory; then                        \
                set $(EXIT_ON_ERROR);                           \
                echo "cd $$directory; $(MAKE) $@";              \
                $(MAKE) -C $$directory $@;                      \
                set +e;                                         \
            else                                                \
                echo "Skipping non-directory $$directory...";   \
            fi;                                                 \
            $(CLICK_STOPWATCH);                                 \
        done
endif

where EXIT_ON_ERROR is -e.  I suspect that set -e doesn't work in
the shell (Bourne shell?) used in the build.  I ran into a similar
problem on OSF1 before and had to use the Korn shell for set -e to
work right.  This is why we have
    SHELL = /usr/bin/ksh
to mozilla/security/coreconf/OSF1.mk.
You need to log in before you can comment on or make changes to this bug.