On Thu, Aug 25, 2011 at 1:40 PM, Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx> wrote: > On Thu, Aug 25, 2011 at 1:34 PM, Jeff Layton <jlayton@xxxxxxxxx> wrote: >> On Tue, 23 Aug 2011 14:04:24 -0500 >> shirishpargaonkar@xxxxxxxxx wrote: >> >>> From: Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx> >>> >>> >>> Add configure directives for option cifsacl. The default action is >>> to enable cifsacl option. >>> cifsacl option is enabled or disabled in a similar way to cifs.idmap >>> in the same function. In addition, for cifsacl, check for sys/xattr.h >>> is done in the smae .m4 file. >>> >>> Add directives to build getcifsacl in Makefile. >>> >>> Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx> >>> --- >>> Makefile.am | 17 ++++++++++++++++- >>> aclocal/idmap.m4 | 23 ++++++++++++++++++++--- >>> configure.ac | 17 +++++++++++++++++ >>> 3 files changed, 53 insertions(+), 4 deletions(-) >>> >>> diff --git a/Makefile.am b/Makefile.am >>> index 4938447..3ec6b7e 100644 >>> --- a/Makefile.am >>> +++ b/Makefile.am >>> @@ -9,7 +9,7 @@ mount_cifs_LDADD = $(LIBCAP) $(CAPNG_LDADD) >>> man_MANS = mount.cifs.8 >>> >>> sbin_PROGRAMS = >>> -clean-local: clean-local-upcall clean-local-idmap >>> +clean-local: clean-local-upcall clean-local-idmap clean-local-aclprogs >>> >>> if CONFIG_CIFSUPCALL >>> sbin_PROGRAMS += cifs.upcall >>> @@ -50,3 +50,18 @@ clean-local-idmap: >>> if CONFIG_CIFSIDMAP >>> rm -f cifs.idmap.8 cifs.idmap.8-t >>> endif >>> + >>> +if CONFIG_CIFSACL >>> +sbin_PROGRAMS += getcifsacl >>> +getcifsacl_SOURCES = getcifsacl.c >>> +getcifsacl_LDADD = -lkeyutils $(WINB_LDADD) >>> +man_MANS += getcifsacl.8 >>> + >>> +getcifsacl.8: getcifsacl.8.in >>> + $(SED) 's,[@]sbindir@,$(sbindir),' $(srcdir)/$@.in > $@-t && mv $@-t $@ >>> +endif >>> + >>> +clean-local-aclprogs: >>> +if CONFIG_CIFSACL >>> + rm -f getcifsacl.8 getcifsacl.8-t >>> +endif >>> diff --git a/aclocal/idmap.m4 b/aclocal/idmap.m4 >>> index 211d372..ada73f0 100644 >>> --- a/aclocal/idmap.m4 >>> +++ b/aclocal/idmap.m4 >>> @@ -23,10 +23,10 @@ AC_DEFUN([AC_WBCH_COMPL],[ >>> #endif >>> ]]) >>> >>> -dnl Check for wbclient.h header and libwbclietn.so >>> +dnl Check for wbclient.h header and libwbclient.so >>> dnl >>> AC_DEFUN([AC_TEST_WBCHL],[ >>> -if test $enable_cifsidmap != "no"; then >>> +if test $enable_cifsidmap != "no" -o $enable_cifsacl != "no"; then >>> AC_CHECK_HEADERS([wbclient.h], , [ >>> if test "$enable_cifsidmap" = "yes"; then >>> AC_MSG_ERROR([wbclient.h not found, consider installing libwbclient-devel.]) >>> @@ -34,10 +34,27 @@ if test $enable_cifsidmap != "no"; then >>> AC_MSG_WARN([wbclient.h not found, consider installing libwbclient-devel. Disabling cifs.idmap.]) >>> enable_cifsidmap="no" >>> fi >>> + if test "$enable_cifsacl" = "yes"; then >>> + AC_MSG_ERROR([wbclient.h not found, consider installing libwbclient-devel.]) >>> + else >>> + AC_MSG_WARN([wbclient.h not found, consider installing libwbclient-devel. Disabling cifsacl.]) >>> + enable_cifsacl="no" >>> + fi >>> ], [ AC_WBCH_COMPL ]) >>> fi >>> >>> -if test $enable_cifsidmap != "no"; then >>> +if test $enable_cifsacl != "no"; then >>> + AC_CHECK_HEADERS([sys/xattr.h], , [ >>> + if test "$enable_cifsacl" = "yes"; then >>> + AC_MSG_ERROR([/usr/include/sys/xattr.h not found]) >>> + else >>> + AC_MSG_WARN([/usr/include/sys/xattr.h not found. Disabling cifsacl.]) >>> + enable_cifsacl="no" >>> + fi >>> + ], [ ]) >>> +fi >>> + >>> +if test $enable_cifsidmap != "no" -o $enable_cifsacl != "no"; then >>> AC_CHECK_LIB([wbclient], [wbcStringToSid], >>> [ WINB_LDADD='-lwbclient' ] [ AC_DEFINE(HAVE_LIBWBCLIENT, 1, ["Define var have_libwbclient"]) ], [AC_MSG_ERROR([No functioning wbclient library found!])]) >>> AC_SUBST(WINB_LDADD) >>> diff --git a/configure.ac b/configure.ac >>> index 780abe7..293415f 100644 >>> --- a/configure.ac >>> +++ b/configure.ac >>> @@ -28,6 +28,12 @@ AC_ARG_ENABLE(cifsidmap, >>> enable_cifsidmap=$enableval, >>> enable_cifsidmap="maybe") >>> >>> +AC_ARG_ENABLE(cifsacl, >>> + [AC_HELP_STRING([--enable-cifsacl], >>> + [Create get/set cifsacl binary @<:@default=yes@:>@])], >>> + enable_cifsacl=$enableval, >>> + enable_cifsacl="maybe") >>> + >>> # Checks for programs. >>> AC_PROG_CC >>> AC_PROG_SED >>> @@ -94,6 +100,16 @@ if test $enable_cifsupcall != "no" -o $enable_cifsidmap != "no"; then >>> fi >>> ]) >>> fi >>> +if test $enable_cifsacl != "no"; then >>> + AC_CHECK_HEADERS([wbclient.h], , [ >>> + if test "$enable_cifsacl" = "yes"; then >>> + AC_MSG_ERROR([wbclient.h not found, consider installing libwbclient-devel.]) >>> + else >>> + AC_MSG_WARN([wbclient.h not found, consider installing libwbclient-devel. Disabling getcifsacl.]) >>> + enable_cifsacl="no" >>> + fi >>> + ]) >>> +fi >>> if test $enable_cifsupcall != "no"; then >>> AC_CHECK_LIB([krb5], [krb5_init_context], >>> [ KRB5_LDADD='-lkrb5' ], >>> @@ -156,6 +172,7 @@ LIBS=$cu_saved_libs >>> AM_CONDITIONAL(CONFIG_CIFSUPCALL, [test "$enable_cifsupcall" != "no"]) >>> AM_CONDITIONAL(CONFIG_CIFSCREDS, [test "$enable_cifscreds" = "yes"]) >>> AM_CONDITIONAL(CONFIG_CIFSIDMAP, [test "$enable_cifsidmap" != "no"]) >>> +AM_CONDITIONAL(CONFIG_CIFSACL, [test "$enable_cifsacl" != "no"]) >>> >>> LIBCAP_NG_PATH >>> >>> -- >>> 1.6.0.2 >>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in >>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >> >> >> I started pulling these in and ran into a snag... >> >> checking wbclient.h presence... yes >> configure: WARNING: wbclient.h: present but cannot be compiled >> configure: WARNING: wbclient.h: check for missing prerequisite headers? >> configure: WARNING: wbclient.h: see the Autoconf documentation >> configure: WARNING: wbclient.h: section "Present But Cannot Be Compiled" >> configure: WARNING: wbclient.h: proceeding with the compiler's result >> configure: WARNING: ## ----------------------------------- ## >> configure: WARNING: ## Report this to cifs-utils@xxxxxxxxx ## >> configure: WARNING: ## ----------------------------------- ## >> >> ...according to config.log: >> >> configure:4410: gcc -c -g -O2 conftest.c >&5 >> In file included from conftest.c:84:0: >> /usr/include/wbclient.h:664:5: error: unknown type name 'bool' >> configure:4410: $? = 1 >> configure: failed program was: >> >> ...this looks like a bug in wbclient.h, actually. It should be >> including stdbool.h before trying to use a bool. Unfortunately though, >> we're likely going to need to work around this bug. I know there's a >> way to make autoconf tests pull in extra includes, but I don't have my >> autoconf book handy. >> >> Shirish, can you look into this, fix it and resubmit this patch? >> >> Simo tells me there's an open samba bug to fix this... >> >> -- >> Jeff Layton <jlayton@xxxxxxxxx> >> > > Jeff, yes. But this is not the first time wbclient.h has been used, > cifs.idmap.c needed it earlier. Has something changed now that > this is popping up? Looking into it. > > Regards, > > Shirish > I see it. But does not look like a show stopper i.e. getcifsacl, setcifsacl, cifs.idmap are built and work. But the error needs to be fixed. I think I had seen this and could not think of a way to eliminate it (during cifs.idmap code) but do not remember clearly why. Regards, Shirish -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html