Re: [PATCH v2 3/7] nfsdcld: add autoconf goop for sqlite

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 15 Dec 2011 13:43:57 -0500
Jeff Layton <jlayton@xxxxxxxxxx> wrote:

> Mostly cribbed from Chuck Lever's new-statd rewrite a few years ago...
> 

Sending this to Bruce and Steve, but cc'ing the list in case other
people have thoughts...

I have a couple of questions about configure/build behavior when the
dependencies aren't present on the build system. The patch below
autodisables the building of nfsdcld when sqlite isn't there or isn't
functional, etc.

This is probably fine initially, but eventually I'd like to see the
old state tracking code go away. At that point, this daemon will be
required for NFSv4 serving.

Some questions:

1) does anyone have a problem with deprecating the old state tracking
code? I'd prefer we not maintain it in perpetuity, but maybe there's an
argument for keeping it around?

2) assuming we do want to eventually deprecate the old code. When
should we plan to do this. Assuming that this goes into 3.3 and we add
sufficient printk warnings when the old tracker is used, the earliest
we could remove it is 3.5. Is that too aggressive?

3) again, assuming that we want to deprecate the old code eventually,
does it make sense to autodisable the daemon when the build deps aren't
sufficient for it? With it be better to make the build error out when
--enable-nfsv4 is "yes" and not bother with a new --enable option for
this daemon?

I probably will also need to add a autoconf test for inotify too.
Having an answer to these questions may save me from a lot of complex
autoconf hacking....

Thanks,

> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
> ---
>  aclocal/libsqlite3.m4 |   33 +++++++++++++++++++++++++++++++++
>  configure.ac          |   22 ++++++++++++++++++++++
>  utils/Makefile.am     |    5 ++++-
>  3 files changed, 59 insertions(+), 1 deletions(-)
>  create mode 100644 aclocal/libsqlite3.m4
> 
> diff --git a/aclocal/libsqlite3.m4 b/aclocal/libsqlite3.m4
> new file mode 100644
> index 0000000..73d1e46
> --- /dev/null
> +++ b/aclocal/libsqlite3.m4
> @@ -0,0 +1,33 @@
> +dnl Checks for matching sqlite3 header and library, and
> +dnl sufficient sqlite3 version.
> +dnl
> +AC_DEFUN([AC_SQLITE3_VERS], [
> +  AC_CHECK_HEADERS([sqlite3.h], ,)
> +
> +  dnl look for the library; do not add to LIBS if found
> +  AC_CHECK_LIB([sqlite3], [sqlite3_libversion_number], [LIBSQLITE=-lsqlite3], ,)
> +  AC_SUBST(LIBSQLITE)
> +
> +  AC_MSG_CHECKING(for suitable sqlite3 version)
> +
> +  AC_CACHE_VAL([libsqlite3_cv_is_recent],
> +   [
> +    saved_LIBS="$LIBS"
> +    LIBS=-lsqlite3
> +    AC_TRY_RUN([
> +	#include <stdio.h>
> +	#include <sqlite3.h>
> +	int main()
> +	{
> +		int vers = sqlite3_libversion_number();
> +
> +		return vers != SQLITE_VERSION_NUMBER ||
> +			vers < 3003000;
> +	}
> +       ], [libsqlite3_cv_is_recent=yes], [libsqlite3_cv_is_recent=no],
> +       [libsqlite3_cv_is_recent=unknown])
> +    LIBS="$saved_LIBS"])
> +
> +  AC_MSG_RESULT($libsqlite3_cv_is_recent)
> +  AM_CONDITIONAL(CONFIG_SQLITE3, [test "$libsqlite3_cv_is_recent" = "yes"])
> +])dnl
> diff --git a/configure.ac b/configure.ac
> index c5b6a0f..bf018a2 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -186,6 +186,12 @@ else
>  	AM_CONDITIONAL(MOUNT_CONFIG, [test "$enable_mount" = "yes"])
>  fi
>  
> +AC_ARG_ENABLE(nfsdcld,
> +	[AC_HELP_STRING([--enable-nfsdcld],
> +			[Create nfsdcld NFSv4 clientid tracking daemon. <:@default=yes@:>@])],
> +	enable_nfsdcld=$enableval,
> +	enable_nfsdcld="maybe")
> +
>  dnl Check for TI-RPC library and headers
>  AC_LIBTIRPC
>  
> @@ -259,6 +265,9 @@ if test "$enable_nfsv4" = yes; then
>    dnl check for the keyutils libraries and headers
>    AC_KEYUTILS
>  
> +  dnl Check for sqlite3
> +  AC_SQLITE3_VERS
> +
>    dnl librpcsecgss already has a dependency on libgssapi,
>    dnl but we need to make sure we get the right version
>    if test "$enable_gss" = yes; then
> @@ -328,6 +337,19 @@ fi
>  dnl Check for IPv6 support
>  AC_IPV6
>  
> +dnl Decide what to do with nfsdcld based on sqlite3 test result
> +if test "$enable_nfsv4" = "yes" -a "$libsqlite3_cv_is_recent" != "yes" ; then
> +	if test "$enable_nfsdcld" = "yes"; then
> +		AC_MSG_ERROR([nfsdcld requires sqlite3])
> +	elif test "$enable_nfsdcld" != "no"; then
> +		AC_MSG_WARN([nfsdcld requires sqlite3, autodisabling it])
> +		enable_nfsdcld="no"
> +	fi
> +fi
> +
> +dnl Now set CONFIG_NFSDCLD properly
> +AM_CONDITIONAL(CONFIG_NFSDCLD, [test "$enable_nfsdcld" != "no" ])
> +
>  dnl *************************************************************
>  dnl Check for headers
>  dnl *************************************************************
> diff --git a/utils/Makefile.am b/utils/Makefile.am
> index f42c7ee..5df7ca7 100644
> --- a/utils/Makefile.am
> +++ b/utils/Makefile.am
> @@ -21,8 +21,11 @@ if CONFIG_MOUNT
>  OPTDIRS += mount
>  endif
>  
> +if CONFIG_NFSDCLD
> +OPTDIRS += nfsdcld
> +endif
> +
>  SUBDIRS = \
> -	nfsdcld \
>  	exportfs \
>  	mountd \
>  	nfsd \


-- 
Jeff Layton <jlayton@xxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux