[patch] fix configure bug re yp_get_default_domain

Martin Pool mbp at sourcefrog.net
Mon Jan 13 05:37:01 GMT 2003


Re-running ./configure (e.g. to change --disable options) in a build
directory seems to cause builds to fail with these errors:

lib/username.o(.text+0x654): In function `user_in_netgroup_list':
: undefined reference to `yp_get_default_domain'
lib/access.o(.text+0x163): In function `string_match':
: undefined reference to `yp_get_default_domain'
smbd/password.o(.text+0x1e9e): In function `check_user_equiv':
: undefined reference to `yp_get_default_domain'

This happens when I just do "make clean" in between builds.  Tim says
the workaround is to remove config.cache, but there are already too
many parrots under that carpet.  I thought I'd see what was really
wrong.

The problem seems to be in the yp_get_default_domain detection: the
first time configure is run, it detects that it needs -lnsl, but when
the cache is present it gets it wrong.  

Basically the fix is to follow the Autoconf manual and check for the
library before checking for the function.

This patch is for HEAD, but should apply without too much fuss to
APPL_HEAD or 2.2.

Index: configure.in
===================================================================
RCS file: /data/cvs/samba/source/configure.in,v
retrieving revision 1.384
diff -u -u -p -r1.384 configure.in
--- configure.in	13 Jan 2003 04:57:21 -0000	1.384
+++ configure.in	13 Jan 2003 05:34:36 -0000
@@ -509,11 +509,7 @@ fi
 
 ############################################
 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
-AC_CHECK_FUNCS(dlopen)
-if test x"$ac_cv_func_dlopen" = x"no"; then
-    AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
-	AC_DEFINE(HAVE_DLOPEN,1,[Whether we have dlopen()])])
-fi
+AC_SEARCH_LIBS(dlopen, [dl])
 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
 
 ############################################
@@ -616,12 +612,8 @@ AC_FUNC_MEMCMP
 
 ###############################################
 # test for where we get crypt() from
-AC_CHECK_FUNCS(crypt)
-if test x"$ac_cv_func_crypt" = x"no"; then
-    AC_CHECK_LIB(crypt, crypt, [AUTHLIBS="$AUTHLIBS -lcrypt";
+AC_SEARCH_LIBS(crypt, [crypt], [AUTHLIBS="$AUTHLIBS -lcrypt";
 	AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
-fi
-
 
 ###############################################
 # Readline included by default unless explicitly asked not to
@@ -730,11 +722,8 @@ fi
 
 ###############################################
 # test for where we get yp_get_default_domain() from
+AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
 AC_CHECK_FUNCS(yp_get_default_domain)
-if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
-	AC_CHECK_LIB(nsl, yp_get_default_domain, [LIBS="$LIBS -lnsl";
-	AC_DEFINE(HAVE_YP_GET_DEFAULT_DOMAIN,1,[Whether the system has yp_get_default_domain()])]) 
-fi
 
 # Check if we have execl, if not we need to compile smbrun.
 AC_CHECK_FUNCS(execl)


-- 
Martin 



More information about the samba-technical mailing list