diff --git a/CHANGELOG b/CHANGELOG index 9d19c0a..2d5d5b1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,7 @@ xx/xx/2018 autofs-5.1.5 - fix sublink option not set from defaults. - fix error return in do_nfs_mount(). - add error handling for ext_mount_add(). +- account for recent libnsl changes. 19/12/2017 autofs-5.1.4 - fix spec file url. diff --git a/Makefile.conf.in b/Makefile.conf.in index f879e26..8566265 100644 --- a/Makefile.conf.in +++ b/Makefile.conf.in @@ -14,8 +14,8 @@ DAEMON_LDFLAGS = @DAEMON_LDFLAGS@ # Glibc < 2.17 requires librt for clock_gettime() LIBCLOCK_GETTIME = @LIBCLOCK_GETTIME@ -# Special parameters for glibc (libc 6) -LIBNSL = @LIBNSL@ +NSLLIB = @NSL_LIBS@ +NSLCFLAGS = @NSL_CFLAGS@ LIBRESOLV = @LIBRESOLV@ # Hesiod support: yes (1) no (0) diff --git a/Makefile.rules b/Makefile.rules index 0edf9bf..2bfa043 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -54,8 +54,6 @@ ifdef DMALLOCLIB LIBS += $(DMALLOCLIB) endif -LIBS += $(LIBNSL) - LIBS += $(LIBCLOCK_GETTIME) # Standard rules diff --git a/aclocal.m4 b/aclocal.m4 index 5177204..f1ed387 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -417,3 +417,48 @@ fi LIBS="$af_check_ldap_parse_page_control_save_libs" ]) +dnl -------------------------------------------------------------------------- +dnl AF_CHECK_YPCLNT_HEADER +dnl +dnl Check for include file rpcsvc/ypclnt.h for YellowPages support. +dnl -------------------------------------------------------------------------- +AC_DEFUN([AF_CHECK_YPCLNT_HEADER], +[ +# save current CFLAGS +af_check_ypclnt_header_save_cflags="$CFLAGS" +CFLAGS="$CFLAGS $NSL_CFLAGS $TIRPC_CFLAGS" + +HAVE_YPCLNT=0 +AC_CHECK_HEADER([rpcsvc/ypclnt.h], HAVE_YPCLNT=1) +AC_SUBST(HAVE_YPCLNT) +if test "$HAVE_YPCLNT" = "1"; then + AC_DEFINE(HAVE_YPCLNT, 1, + [Define if using YellowPages]) +fi + +# restore libs +CFLAGS="$af_check_ypclnt_header_save_cflags" +]) + +dnl -------------------------------------------------------------------------- +dnl AF_CHECK_NIS_HEADER +dnl +dnl Check for include file rpcsvc/nis.h for NIS+ support. +dnl -------------------------------------------------------------------------- +AC_DEFUN([AF_CHECK_NIS_HEADER], +[ +# save current CFLAGS +af_check_nis_header_save_cflags="$CFLAGS" +CFLAGS="$CFLAGS $NSL_CFLAGS $TIRPC_CFLAGS" + +HAVE_NISPLUS=0 +AC_CHECK_HEADER([rpcsvc/nis.h], HAVE_NISPLUS=1) +AC_SUBST(HAVE_NISPLUS) +if test "$HAVE_NISPLUS" = "1"; then + AC_DEFINE(HAVE_NISPLUS, 1, + [Define if using NIS+]) +fi + +# restore libs +CFLAGS="$af_check_nis_header_save_cflags" +]) diff --git a/configure b/configure index 476cea4..2d517aa 100755 --- a/configure +++ b/configure @@ -634,8 +634,8 @@ XML_FLAGS LIBLDAP HAVE_LDAP LDAP_FLAGS -HAVE_YPCLNT HAVE_NISPLUS +HAVE_YPCLNT EGREP GREP CPP @@ -643,7 +643,8 @@ HESIOD_FLAGS LIBHESIOD HAVE_HESIOD LIBRESOLV -LIBNSL +NSL_LIBS +NSL_CFLAGS LIBCLOCK_GETTIME KRB5_CONFIG XML_CONFIG @@ -764,6 +765,8 @@ CFLAGS LDFLAGS LIBS CPPFLAGS +NSL_CFLAGS +NSL_LIBS CPP' @@ -1417,6 +1420,8 @@ Some influential environment variables: LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory + NSL_CFLAGS C compiler flags for NSL, overriding pkg-config + NSL_LIBS linker flags for NSL, overriding pkg-config CPP C preprocessor Use these variables to override the choices made by `configure' or to help @@ -4500,9 +4505,186 @@ fi -# -# glibc/libc 6 new libraries -# + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NSL" >&5 +$as_echo_n "checking for NSL... " >&6; } + +if test -n "$NSL_CFLAGS"; then + pkg_cv_NSL_CFLAGS="$NSL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnsl\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnsl") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_NSL_CFLAGS=`$PKG_CONFIG --cflags "libnsl" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$NSL_LIBS"; then + pkg_cv_NSL_LIBS="$NSL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnsl\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnsl") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_NSL_LIBS=`$PKG_CONFIG --libs "libnsl" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + NSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libnsl" 2>&1` + else + NSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libnsl" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$NSL_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yp_match in -lnsl" >&5 $as_echo_n "checking for yp_match in -lnsl... " >&6; } if ${ac_cv_lib_nsl_yp_match+:} false; then : @@ -4540,10 +4722,66 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_yp_match" >&5 $as_echo "$ac_cv_lib_nsl_yp_match" >&6; } if test "x$ac_cv_lib_nsl_yp_match" = xyes; then : - LIBNSL="-lnsl" + NSL_LIBS="-lnsl" fi +NSL_CFLAGS="" + +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for yp_match in -lnsl" >&5 +$as_echo_n "checking for yp_match in -lnsl... " >&6; } +if ${ac_cv_lib_nsl_yp_match+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char yp_match (); +int +main () +{ +return yp_match (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_yp_match=yes +else + ac_cv_lib_nsl_yp_match=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_yp_match" >&5 +$as_echo "$ac_cv_lib_nsl_yp_match" >&6; } +if test "x$ac_cv_lib_nsl_yp_match" = xyes; then : + NSL_LIBS="-lnsl" +fi + + +NSL_CFLAGS="" + +else + NSL_CFLAGS=$pkg_cv_NSL_CFLAGS + NSL_LIBS=$pkg_cv_NSL_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5 $as_echo_n "checking for res_query in -lresolv... " >&6; } @@ -4659,8 +4897,6 @@ fi LDFLAGS="${AF_tmp_ldflags}" -# NIS+ support? -HAVE_NISPLUS=0 ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -5058,15 +5294,11 @@ fi done -ac_fn_c_check_header_mongrel "$LINENO" "rpcsvc/nis.h" "ac_cv_header_rpcsvc_nis_h" "$ac_includes_default" -if test "x$ac_cv_header_rpcsvc_nis_h" = xyes; then : - HAVE_NISPLUS=1 -fi - +# save current CFLAGS +af_check_ypclnt_header_save_cflags="$CFLAGS" +CFLAGS="$CFLAGS $NSL_CFLAGS $TIRPC_CFLAGS" - -# YellowPages support? HAVE_YPCLNT=0 ac_fn_c_check_header_mongrel "$LINENO" "rpcsvc/ypclnt.h" "ac_cv_header_rpcsvc_ypclnt_h" "$ac_includes_default" if test "x$ac_cv_header_rpcsvc_ypclnt_h" = xyes; then : @@ -5081,6 +5313,32 @@ $as_echo "#define HAVE_YPCLNT 1" >>confdefs.h fi +# restore libs +CFLAGS="$af_check_ypclnt_header_save_cflags" + + +# save current CFLAGS +af_check_nis_header_save_cflags="$CFLAGS" +CFLAGS="$CFLAGS $NSL_CFLAGS $TIRPC_CFLAGS" + +HAVE_NISPLUS=0 +ac_fn_c_check_header_mongrel "$LINENO" "rpcsvc/nis.h" "ac_cv_header_rpcsvc_nis_h" "$ac_includes_default" +if test "x$ac_cv_header_rpcsvc_nis_h" = xyes; then : + HAVE_NISPLUS=1 +fi + + + +if test "$HAVE_NISPLUS" = "1"; then + +$as_echo "#define HAVE_NISPLUS 1" >>confdefs.h + +fi + +# restore libs +CFLAGS="$af_check_nis_header_save_cflags" + + # # OpenLDAP support? Expect that this may have a special directory... # diff --git a/configure.in b/configure.in index d366092..d74775c 100644 --- a/configure.in +++ b/configure.in @@ -209,11 +209,13 @@ fi AC_CHECK_LIB(rt, clock_gettime, LIBCLOCK_GETTIME="-lrt") AC_SUBST(LIBCLOCK_GETTIME) -# -# glibc/libc 6 new libraries -# -AC_CHECK_LIB(nsl, yp_match, LIBNSL="-lnsl") -AC_SUBST(LIBNSL) +PKG_PROG_PKG_CONFIG() +PKG_CHECK_MODULES([NSL],[libnsl],, +[ +AC_CHECK_LIB(nsl, yp_match, NSL_LIBS="-lnsl") +AC_SUBST(NSL_LIBS) +NSL_CFLAGS="" +]) AC_CHECK_LIB(resolv, res_query, LIBRESOLV="-lresolv") AC_SUBST(LIBRESOLV) @@ -254,19 +256,8 @@ AC_SUBST(LIBHESIOD) AC_SUBST(HESIOD_FLAGS) LDFLAGS="${AF_tmp_ldflags}" -# NIS+ support? -HAVE_NISPLUS=0 -AC_CHECK_HEADER(rpcsvc/nis.h, HAVE_NISPLUS=1) -AC_SUBST(HAVE_NISPLUS) - -# YellowPages support? -HAVE_YPCLNT=0 -AC_CHECK_HEADER([rpcsvc/ypclnt.h], HAVE_YPCLNT=1) -AC_SUBST(HAVE_YPCLNT) -if test "$HAVE_YPCLNT" = "1"; then - AC_DEFINE(HAVE_YPCLNT, 1, - [Define if using YellowPages]) -fi +AF_CHECK_YPCLNT_HEADER() +AF_CHECK_NIS_HEADER() # # OpenLDAP support? Expect that this may have a special directory... diff --git a/include/config.h.in b/include/config.h.in index 04873e8..991a2bd 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -57,6 +57,9 @@ /* define if you have MOUNT_NFS */ #undef HAVE_MOUNT_NFS +/* Define if using NIS+ */ +#undef HAVE_NISPLUS + /* define if the umount command supports the -c option */ #undef HAVE_NO_CANON_UMOUNT diff --git a/modules/Makefile b/modules/Makefile index d9ab06c..0447559 100644 --- a/modules/Makefile +++ b/modules/Makefile @@ -116,6 +116,16 @@ parse_amd.so: parse_amd.c amd_parse.tab.o amd_tok.o # # Ad hoc compilation rules for modules which need auxilliary libraries # +lookup_yp.so: lookup_yp.c + $(CC) $(SOLDFLAGS) $(CFLAGS) $(NSLCFLAGS) -o lookup_yp.so \ + lookup_yp.c $(LDFLAGS) $(AUTOFS_LIB) $(LIBS) $(NSLLIB) + $(STRIP) lookup_yp.so + +lookup_nisplus.so: lookup_nisplus.c + $(CC) $(SOLDFLAGS) $(CFLAGS) $(NSLCFLAGS) -o lookup_nisplus.so \ + lookup_nisplus.c $(LDFLAGS) $(AUTOFS_LIB) $(LIBS) $(NSLLIB) + $(STRIP) lookup_nisplus.so + lookup_hesiod.so: lookup_hesiod.c $(CC) $(SOLDFLAGS) $(CFLAGS) $(HESIOD_FLAGS) -o lookup_hesiod.so \ lookup_hesiod.c $(LDFLAGS) $(AUTOFS_LIB) $(LIBHESIOD) $(LIBRESOLV) $(LIBS)