Bug 2309 - Build of 3.0.11 fails with Kerberos 1.4
Build of 3.0.11 fails with Kerberos 1.4
Status: CLOSED FIXED
Product: Samba 3.0
Classification: Unclassified
Component: Build environment
3.0.11
Sparc Solaris
: P3 normal
: none
Assigned To: Gerald (Jerry) Carter
Samba QA Contact
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2005-02-04 13:53 UTC by Glenn Malling
Modified: 2005-08-24 10:25 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Glenn Malling 2005-02-04 13:53:20 UTC
Build of 3.0.11 against Kerberos 1.4 fails with:

Compiling smbd/server.c
Linking bin/smbd
Undefined                       first referenced
 symbol                             in file
error_message                       libsmb/cliconnect.o  (symbol belongs to
implicit dependency /local/usr/lib/libcom_err.so.3)
ld: fatal: Symbol referencing errors. No output written to bin/smbd
collect2: ld returned 1 exit status
make: *** [bin/smbd] Error 1

Building 3.0.11 against Kerberos 1.3.6 succeeds.
Comment 1 Gerald (Jerry) Carter 2005-02-04 14:08:02 UTC
jeremy, want to look at this one sometime?  Thanks.
Comment 2 Lars Müller 2005-02-04 15:04:16 UTC
rpm -qa | grep krb
krb5-1.4-4
krb5-devel-1.4-4

Compiling smbd/server.c
Linking bin/smbd
Compiling nmbd/asyncdns.c

And Samba 3.0.11 builds well in this environment.

We had problems with Samba builds caused by name space violation in the
krb5-devel package (/usr/include/gssapi/gssapi.h).  There are several defines
which aren't needed by krb5 self.
Comment 3 Gerald (Jerry) Carter 2005-02-09 20:38:53 UTC
I've checked in a fix for the HAVE_REGEX_H bug with gssapi.h
It's available at http://www.samba.org/~jerry/patches/post-3.0.11/clitar.patch

I don't have a solaris box but this looks like either 
(a) the solaris linker doesn't bring in the needed dependent
libraries for the krb5 libs, or (b) you did not use the 
builtin MIT libcom_err.
Comment 4 Lars Müller 2005-02-10 05:31:05 UTC
Setting HAVE_REGEX_H in /usr/include/gssapi/gssapi.h is a name space violation.
 It happend by accident and will be fixed by MIT Kerberos.  We currently use a
patched Makefile.in to reduce the namespace polution.

It's still my opinion that this isn't a Samba bug.

But as we never set HAVE_REGEX_H while calling configure it migth be best to
remove all the #if HAVE_REGEX_H.
Comment 5 Gerald (Jerry) Carter 2005-02-10 06:19:32 UTC
The HEAV_REGEX_H ifdefs in clitar have been already been removed.
That was what my patch did.  The issue here is a linking on
that may be specific to the solaris ld (which I always have 
problems with).

Glenn,  what compiler and linker are you using ?
Comment 6 Glenn Malling 2005-02-10 07:43:52 UTC
I am using gcc 3.4.3 and the Sun version of ld.  I've never had any luck getting
the gnu version of ld to work on Solaris.  It's Solaris 8 BTW.

dormouse? what `which ld`
/usr/ccs/bin/ld:
        SunOS 5.8 Generic 109147-30 Jun 2004
dormouse? gcc -v
Reading specs from
/local/usr/gnu/gcc/3.4.3/bin/../lib/gcc/sparc-sun-solaris2.8/3.4.3/specs
Configured with: /local/usr/src/gnu/gcc/gcc-3.4.3/configure --prefix=/local/usr
--with-local-prefix=/local/usr
Thread model: posix
gcc version 3.4.3
dormouse? 
Comment 7 Gerald (Jerry) Carter 2005-02-10 08:10:01 UTC
I always rename the sun ld to /usr/ccs/bin/ld.sun or something.
And then add a link from /usr/bin/ld to the GNU ld binary.

Can you try this and retest against GNU ld ?
Comment 8 Glenn Malling 2005-02-10 09:48:29 UTC
Using binutils-2.15 I get a segfault in gnu ld.  I've never had the time or
ambition to track this down.  Ambition is necessary to gain the competance to do
the task.  - Glenn

dormouse$ make
Using FLAGS =  -I/local/usr/include -O  -Iinclude
-I/local/usr/src/samba/samba-3.0.11/source/include
-I/local/usr/src/samba/samba-3.0.11/source/ubiqx
-I/local/usr/src/samba/samba-3.0.11/source/smbwrapper  -I. -I/local/usr/include
-D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64
-I/local/usr/src/samba/samba-3.0.11/source    
      LIBS = -lsendfile -lsec -lresolv -lsocket -lnsl -liconv
      LDSHFLAGS = -G  -L/local/usr/lib -lthread
      LDFLAGS = -L/local/usr/lib -lthread
Linking bin/nmbd
collect2: ld terminated with signal 11 [Segmentation Fault], core dumped
make: *** [bin/nmbd] Error 1
dormouse$ 
Comment 9 Greg Folkert 2005-02-12 14:28:50 UTC
(In reply to comment #3)
> I've checked in a fix for the HAVE_REGEX_H bug with gssapi.h
> It's available at http://www.samba.org/~jerry/patches/post-3.0.11/clitar.patch
> 
> I don't have a solaris box but this looks like either 
> (a) the solaris linker doesn't bring in the needed dependent
> libraries for the krb5 libs, or (b) you did not use the 
> builtin MIT libcom_err.

This patch works on RHAS with Samba v3.0.11 and Kerberos v1.4 both compiled from
source.

Kerberos compile line:
./configure --program-prefix= --prefix=/usr --exec-prefix=/usr \
    --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc \
    --datadir=/usr/share --includedir=/usr/include \
    --libdir=/usr/lib --libexecdir=/usr/libexec \
    --localstatedir=/var --sharedstatedir=/usr/com \
    --mandir=/usr/share/man --infodir=/usr/share/info CC=gcc \
    CFLAGS="-O2 -g -pipe -march=i386 -mcpu=i686 -I/usr/include/et -fPIC" \
    LDFLAGS="" CPPFLAGS="-I/usr/include/et" --enable-shared \
    --enable-static --bindir=/usr/kerberos/bin \
    --mandir=/usr/kerberos/man --sbindir=/usr/kerberos/sbin \
    --datadir=/usr/kerberos/share --localstatedir=/var/kerberos \
    --with-krb4 --with-system-et --with-system-ss --without-tcl \
    --enable-dns

After krb5 install and the clitar.c patch was applied (well, I just removed the
lines in the patch to remove) I used a configure line of:
./configure --program-prefix= --prefix=/usr --exec-prefix=/usr \
    --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc \
    --datadir=/usr/share --includedir=/usr/include \
    --libdir=/usr/lib --libexecdir=/usr/libexec \
    --localstatedir=/var --sharedstatedir=/usr/com \
    --mandir=/usr/share/man --infodir=/usr/share/info
    --with-acl-support --with-automount \
    --with-codepagedir=/usr/share/samba/codepages --with-fhs \
    --with-libsmbclient --with-lockdir=/var/cache/samba --with-pam \
    --with-pam_smbpass --with-piddir=/var/run \
    --with-privatedir=/etc/samba --with-quotas --with-smbmount \
    --with-swatdir=/usr/share/swat --with-syslog --with-utmp \
    --with-vfs --without-smbwrapper --with-ads --with-winbind \
    --with-krb5

It compiled just fine, with on a few type-ing errors. Following is the snippet
from the compile:

client/client.c: In function `do_get':
client/client.c:699: warning: passing arg 4 of `cli_getattrE' from incompatible
pointer type
client/client.c: In function `do_put':
client/client.c:1075: warning: passing arg 4 of `cli_getattrE' from incompatible
pointer type
Compiling client/clitar.c
Compiling lib/readline.c
Linking bin/smbclient

As you can see, it is the new version of Kerberos that did this.
Comment 10 Gerald (Jerry) Carter 2005-02-25 21:21:33 UTC
all known compile issues with MIT krb 14. fixed in 3.0.12pre1
Comment 11 Gerald (Jerry) Carter 2005-08-24 10:25:31 UTC
sorry for the same, cleaning up the database to prevent unecessary reopens of bugs.