Description of problem: autofs on x86_64 systems is missing the lookup_hesiod.so module Version-Release number of selected component (if applicable): 5.0.0_beta6-5 How reproducible: Always Steps to Reproduce: 1. Use authconfig to turn on hesiod support. This adds 'hesiod' to the 'automount' setting in /etc/nsswitch.conf. 2. Restart autofs. Actual results: Jul 7 10:13:25 axe automount[20962]: open_lookup: cannot open lookup module hesiod (/usr/lib64/autofs/lookup_hesiod.so: cannot open shared object file: No such file or directory) Expected results: No log entry? Hesiod doesn't have either enumeration or support for more than one map, so I don't expect anything useful to happen.
Ian, we looked at the build logs and it showed that the configure script did not find hes_resolve in any library. So, I guess that's where we start.
(In reply to comment #1) > Ian, we looked at the build logs and it showed that the configure script did not > find hes_resolve in any library. So, I guess that's where we start. Oh wow. I haven't changed any of that for ages. I'll hunt for the build logs and have a look also.
(In reply to comment #0) > Description of problem: > autofs on x86_64 systems is missing the lookup_hesiod.so module Nalin I think mybe you can help here. Only on x86_64 in configure I'm getting : /usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../lib64/libhesiod.so: undefined reference to `__dn_skipname' /usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../lib64/libhesiod.so: undefined reference to `__res_mkquery' /usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../lib64/libhesiod.so: undefined reference to `__res_send' and nm confirms these symbols sren't in libresolve: [raven@raven lib64]$ nm libhesiod.a|egrep -e '(__res_send|__res_mkquery|__dn_skipname)' U __dn_skipname U __res_mkquery U __res_send version is current Rawhide 3.1.0-5. Any thoughts? Ian
(In reply to comment #3) > and nm confirms these symbols sren't in libresolve: > [raven@raven lib64]$ nm libhesiod.a|egrep -e > '(__res_send|__res_mkquery|__dn_skipname)' > U __dn_skipname > U __res_mkquery > U __res_send Those symbols are in libresolv (you scanned libhesiod :). Turns out libhesiod links with libresolv on i386 but not on x86_64, so while the configure test for libresolv in autofs is probably not quite right, the shared library dependency was masking it on i386.
How do you figure the checks in the autofs configure script are wrong? AC_CHECK_LIB(resolv, res_query, LIBRESOLV="-lresolv") AC_SUBST(LIBRESOLV) AC_CHECK_LIB(hesiod, hesiod_resolve, HAVE_HESIOD=1 LIBHESIOD="$LIBHESIOD -lhesiod", , $LIBRESOLV) results in: checking for res_query in -lresolv... no checking for hesiod_resolve in -lhesiod... no So, what, in particular, do you see wrong with that?
AC_CHECK_LIB can't take into account that <resolv.h> does this: #define res_mkquery __res_mkquery so I'd suggest using the AC_TRY_LINK macro to attempt to compile and link a simple program which includes the header and attempts to use the function, and having configure call it in the "else" part of the AC_CHECK_LIB call.
(In reply to comment #6) > AC_CHECK_LIB can't take into account that <resolv.h> does this: > #define res_mkquery __res_mkquery > so I'd suggest using the AC_TRY_LINK macro to attempt to compile and link a > simple program which includes the header and attempts to use the function, and > having configure call it in the "else" part of the AC_CHECK_LIB call. > Nalin can you try autofs-5.0.0_beta6-6 in brewroot (task 96262 was x86_64) and let me know if it resolves this problem. Ian
The module's built and in the package, so I think we're done here. Closing.