RFE: build

Juergen Hasch Hasch at t-online.de
Sat Jan 4 23:51:01 GMT 2003


Hi Jens,

>I just tried to build samba 2.2.7a with cups and acl, but it did
>not work out of the box without fixing source/Makefile.in,
>source/configure.in and include/smb_acls.h.
>
Samba should build fine on most systems.
What operating system and gcc / ld version do you use ?

Your patches don't seem right, please show your ./configure output.

1)  For SHLD the LDSHFLAGS parameter is used. It should get set to -shared.

2) cups-config is coming from the cups installation. It's created when 
you run
configure at the cups source. You can specify the directories there. If 
you install
cups from a rpm it should also be correct.

3) Not true. sys/acl.h gets included in includes.h
Configure obviously didn't find the acl includes.

4) Where did you install the acl headers ?
For most systems Samba should be able to find the acl headers and 
libraries itself.

It looks like you have a fairly non-standard system or moved your 
software packages all around :-)
...Juergen

>If you have the time, please have a look at the following patches:
>
>1) Makefile.in:
>   we need to pass LDFLAGS to the $SHLD (i.e. usually "gcc -shared"),
>   otherwise the linker may not find required libs or link the binary
>   against a lib in the "default" LD_LIBRARY_PATH and not against the
>   lib[s], which the user wants to. Furthermore it installs the
>   libsmbclient libs in $(LIBDIR) and ,perhaps not so smart, it adds
>   installclientlib to the install target:
>
>----------schnipp----------
>--- samba-2.2.7a/source/Makefile.in.orig	Tue Dec 10 15:58:00 2002
>+++ samba-2.2.7a/source/Makefile.in	Sat Jan  4 18:33:24 2003
>@@ -11,10 +11,10 @@
> LIBS=@LIBS@
> LDAPLIBS=@LDAPLIBS@
> CC=@CC@
>-SHLD=@SHLD@ 
> CFLAGS=@CFLAGS@
> CPPFLAGS=@CPPFLAGS@
> LDFLAGS=@LDFLAGS@
>+SHLD=@SHLD@ $(LDFLAGS)
> AWK=@AWK@
> DYNEXP=@DYNEXP@
> 
>@@ -695,7 +695,7 @@
> 	@echo Linking $@
> 	@$(CC) $(FLAGS) -o $@ $(TDBDUMP_OBJ)
> 
>-install: installbin installman installscripts installcp installswat
>+install: installbin installman installscripts installcp installswat installclientlib
> 
> installdirs:
> 	$(SHELL) $(srcdir)/install-sh -d -m $(INSTALLPERMS) $(BASEDIR)
>@@ -723,7 +723,7 @@
> 	@$(SHELL) $(srcdir)/script/installswat.sh $(SWATDIR) $(srcdir)
> 
> installclientlib:
>-	-$(INSTALLCMD) bin/libsmbclient.so
>+	-$(INSTALLCMD) bin/libsmbclient.* $(LIBDIR)/
> 	-$(INSTALLCMD) -d ${prefix}/include
> 	-$(INSTALLCMD) include/libsmbclient.h ${prefix}/include
>	
>----------schnapp----------
>
>
>2) CUPS: IMHO, using "pseudo intelligent" tools like cups-config is not
>   very smart! What, if a user has moved its installation e.g. from /usr
>   to /usr/local? Is he required, to fix cups-config manually as well?
>
>   Nevertheless, configure allows the user to define the include and
>   lib path for openssl, why not for cups? If one just wants to
>   build the package, the current approach does not work, since it
>   assumes, that cups is installed on the system. Also it does not
>   make sense, to link smb binaries agains e.g. against -lssl -lcrypto
>   (LIBS="$LIBS `$CUPS_CONFIG --libs`") if it is not required. 
>   smb depends on cups, but not on openssl (if not configured).
>   If libcups depends on openssl, it is the task of libcups[package],
>   to find resolve/satisfy calls to a library, not required by smb
>   itself. Otherwise, to be consequent, smb should be linked explizit
>   against libattr, which is not required by smb but by libacl ...
>
>   So my suggestion is:
>
>----------schnipp----------
>--- samba-2.2.7a/source/configure.in.orig	Tue Dec 10 02:01:00 2002
>+++ samba-2.2.7a/source/configure.in	Sat Jan  4 16:35:21 2003
>@@ -491,14 +491,12 @@
> [  --enable-cups           Turn on CUPS support (default=auto)])
> 
> if test x$enable_cups != xno; then
>-	AC_PATH_PROG(CUPS_CONFIG, cups-config)
>-
>-        if test "x$CUPS_CONFIG" != x; then
>-	        AC_DEFINE(HAVE_CUPS)
>-		CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
>-		LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
>-		LIBS="$LIBS `$CUPS_CONFIG --libs`"
>-        fi
>+	AC_HAVE_LIBRARY(cups, [
>+		AC_TRY_CPP([#include "cups/cups.h"
>+			#include "cups/language.h"],
>+			[ AC_DEFINE(HAVE_CUPS) LIBS="-lcups $LIBS"],
>+			AC_MSG_WARN([cups headers not found - cups support disabled]))
>+	])
> fi
> 
> ############################################
>----------schnapp----------
>
>
>3) POSIX acl support lacks the acl.h include. So we need:
>
>----------schnipp----------
>--- samba-2.2.7a/source/include/smb_acls.h.orig	Fri Feb  1 23:13:09 2002
>+++ samba-2.2.7a/source/include/smb_acls.h	Sat Jan  4 06:29:54 2003
>@@ -25,7 +25,7 @@
> #include "includes.h"
> 
> #if defined(HAVE_POSIX_ACLS)
>-
>+#include <sys/acl.h>
> /* This is an identity mapping (just remove the SMB_). */
> 
> #define SMB_ACL_TAG_T               acl_tag_t
>----------schnapp----------
>
>4) Things, which may improve the build process: 
>		--with-aclinc=DIR
>		--with-acllib=DIR
>   otherwise one has always to set CFLAGS, CPPFLAGS, LDFLAGS and
>   LD_LIBRARY_PATH before building smb...
>
>
>Regards,
>jens.
>  
>





More information about the samba-technical mailing list