[SSSD] [PATCHES] Improve portability of autoconf and automake

Sumit Bose sbose at redhat.com
Tue Sep 3 10:15:19 UTC 2013


On Mon, Sep 02, 2013 at 07:04:22PM +0200, Lukas Slebodnik wrote:
> ehlo
> 
> Patches are attached.

I haven't tested to patches so far but already have some comments.

bye,
Sumit

> 
> LS

> From 6e3b789f4b24198b2ec4b40fb09e8b97e578044a Mon Sep 17 00:00:00 2001
> From: Lukas Slebodnik <lslebodn at redhat.com>
> Date: Sat, 31 Aug 2013 01:12:01 +0200
> Subject: [PATCH 2/9] AUTOTOOLS: add check for type intptr_t
> 
> We check whether HAVE_INTPTR_T is defined in definition of macro
> discard_const_p, but autootols macro AC_CHECK_TYPE did not generate it.
> ---
>  src/external/sizes.m4 | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/src/external/sizes.m4 b/src/external/sizes.m4
> index 53df61dedc3ae748c50ca9a3935632087834155d..1018d846016541043d81fb2a53609ad9c562071a 100644
> --- a/src/external/sizes.m4
> +++ b/src/external/sizes.m4
> @@ -37,8 +37,7 @@ AC_CHECK_SIZEOF(off_t)
>  AC_CHECK_SIZEOF(size_t)
>  AC_CHECK_SIZEOF(ssize_t)
>  
> +AC_CHECK_TYPES([intptr_t])
>  AC_CHECK_TYPE(intptr_t, long long)
>  AC_CHECK_TYPE(uintptr_t, unsigned long long)
>  AC_CHECK_TYPE(ptrdiff_t, unsigned long long)

I guess we missed the change of AC_CHECK_TYPE in Autoconf 2.14 where the
style used above still worked. If I understand the docs correctly it
should still work, but you should remove the old AC_CHECK_TYPE for
intptr_t.

Would you mind to update the other old-style AC_CHECK_TYPE usages as
well or open a trac ticket to do so?

> -
> -
> -- 
> 1.8.3.1
> 


> From af2721b0120e9b48e09a9372362a57b8de5f1bf2 Mon Sep 17 00:00:00 2001
> From: Lukas Slebodnik <lslebodn at redhat.com>
> Date: Sat, 31 Aug 2013 05:36:49 +0200
> Subject: [PATCH 4/9] AUTOTOOLS: Add missing AC_MSG_RESULT
> 
> AC_MSG_RESULT was not used everywhere after AC_MSG_CHECKING.
> Therefore two lines from configure output was mixed in some cases.
> ---
>  src/external/krb5.m4          | 3 ++-
>  src/external/nsupdate.m4      | 6 ++++--
>  src/external/pac_responder.m4 | 1 +
>  src/external/python.m4        | 3 ++-
>  4 files changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/src/external/krb5.m4 b/src/external/krb5.m4
> index bdbd71ba1f395eb4f78047f75841729e0289ae81..9cb161d7208c108f744eb34b8e08eb6b3a0fc267 100644
> --- a/src/external/krb5.m4
> +++ b/src/external/krb5.m4
> @@ -16,8 +16,9 @@ if test -x "$KRB5_CONFIG"; then
>    KRB5_LIBS="`$KRB5_CONFIG --libs`"
>    AC_MSG_RESULT(yes)
>  else
> +    AC_MSG_RESULT([no])
>      if test x$KRB5_PASSED_LIBS = x; then
> -        AC_MSG_ERROR(no. Please install MIT kerberos devel package)
> +        AC_MSG_ERROR(Please install MIT kerberos devel package)

can you add [] ?

>      fi
>  fi
>  
> diff --git a/src/external/nsupdate.m4 b/src/external/nsupdate.m4
> index 9ccff615927664afd7d9a6412159791ff79c5485..b7048d58a3f50dfd25c20754f71386646e2e3dce 100644
> --- a/src/external/nsupdate.m4
> +++ b/src/external/nsupdate.m4
> @@ -9,9 +9,11 @@ if test -x "$NSUPDATE"; then
>      AC_MSG_RESULT([yes])
>      AC_DEFINE_UNQUOTED([HAVE_NSUPDATE_REALM], 1, [Whether to use the 'realm' directive with nsupdate])
>    else
> -    AC_MSG_WARN([no. Will build without the 'realm' directive])
> +    AC_MSG_RESULT([no])
> +    AC_MSG_WARN([Will build without the 'realm' directive])
>    fi
>  
>  else
> -  AC_MSG_ERROR([no. nsupdate is not available])
> +  AC_MSG_RESULT([no])
> +  AC_MSG_ERROR([nsupdate is not available])
>  fi
> diff --git a/src/external/pac_responder.m4 b/src/external/pac_responder.m4
> index 733241a1322f4338be0345b2bb969b7a7c5c35ce..f4f4a34e3256d18dc6387e388a1fbebb223f3566 100644
> --- a/src/external/pac_responder.m4
> +++ b/src/external/pac_responder.m4
> @@ -25,6 +25,7 @@ then
>              AC_MSG_RESULT(yes)
>              ;;
>          *)
> +            AC_MSG_RESULT(no)
>              AC_MSG_WARN([Cannot build authdata plugin with this version of
>                           MIT Kerberos, please use 1.9.x or later])
>      esac
> diff --git a/src/external/python.m4 b/src/external/python.m4
> index 5f48bc92618b2fbc23610f67f86e38f659977c5a..cfe9961c75bbd191b78c8cdc21008b11b179548f 100644
> --- a/src/external/python.m4
> +++ b/src/external/python.m4
> @@ -23,7 +23,8 @@ dnl versions of python
>              ' -L' + sysconfig.get_config_var('LIBDIR')\"`"
>              AC_MSG_RESULT([yes])
>      else
> -        AC_MSG_ERROR([no. Please install python devel package])
> +        AC_MSG_RESULT([no])
> +        AC_MSG_ERROR([Please install python devel package])
>      fi
>  ])
>  
> -- 
> 1.8.3.1
> 


> From 2e939d50ce4837a76bb4850e6fb6b1c1435c27c1 Mon Sep 17 00:00:00 2001
> From: Lukas Slebodnik <lslebodn at redhat.com>
> Date: Sat, 31 Aug 2013 12:17:38 +0200
> Subject: [PATCH 8/9] AUTOTOOLS: Use pkg-config to detect libraries.
> 
> We used pkg-config only as a fallback if header files was not found,
> but detection of library failed in case of available header file and
> linking problem (missing -Ldir).
> 
> This patch prefers pkg-config.

Would it make sense to add SSS_AC_EXPAND_LIB_DIR to the non-pkg-config
paths as well?


> From faa431369b66684024272392da507d374695aaea Mon Sep 17 00:00:00 2001
> From: Lukas Slebodnik <lslebodn at redhat.com>
> Date: Sat, 31 Aug 2013 15:32:39 +0200
> Subject: [PATCH 9/9] AUTOTOOLS: Refactor unicode library detection
> 
> If $libdir is not in default library path libunistring cannot be
> found. (pkg-config can not be used in this case).
> This patch helps to search libunistring in "$libdir" directory.
> 
> In refactoring part, indentation was updated to be more readable
> and some duplicated parts were removed.
> ---
>  configure.ac                 | 15 +++++++--------
>  src/build_macros.m4          | 13 +++++++++++++
>  src/external/libunistring.m4 | 31 ++++++++++++++++++++++++-------
>  3 files changed, 44 insertions(+), 15 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index d16054efae73e8844ac236d0220f274684c5ce8d..c8803b16bc8bf95c6902a18fd5a9be3965d9c59e 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -158,16 +158,15 @@ m4_include([src/external/libndr_nbt.m4])
>  
>  WITH_UNICODE_LIB
>  if test x$unicode_lib = xlibunistring; then
> -	m4_include([src/external/libunistring.m4])
> -	        AC_DEFINE_UNQUOTED(HAVE_LIBUNISTRING, 1, [Using libunistring for unicode])
> -	        UNICODE_LIBS=-lunistring
> -	        AC_SUBST(UNICODE_LIBS)
> +    m4_include([src/external/libunistring.m4])
> +    AC_DEFINE_UNQUOTED(HAVE_LIBUNISTRING, 1, [Using libunistring for unicode])
> +    UNICODE_LIBS=$UNISTRING_LIBS
>  else
> -	m4_include([src/external/glib.m4])
> -	        AC_DEFINE_UNQUOTED(HAVE_GLIB2, 1, [Using libunistring for unicode])
> -	        UNICODE_LIBS=$GLIB2_LIBS
> -	        AC_SUBST(UNICODE_LIBS)
> +    m4_include([src/external/glib.m4])
> +    AC_DEFINE_UNQUOTED(HAVE_GLIB2, 1, [Using libunistring for unicode])

Can you fix the old libunistring/glib copy-and-paste error?

> +    UNICODE_LIBS=$GLIB2_LIBS
>  fi
> +AC_SUBST(UNICODE_LIBS)
>  
>  WITH_LIBNL
>  



More information about the sssd-devel mailing list