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

Re: [Xen-devel] [PATCH 4 of 8 v2] autoconf: run libuuid test under Linux only



On Fri, 2012-03-02 at 09:35 +0000, Roger Pau Monnà wrote:
> 2012/3/1 Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>:
> > Roger Pau Monne writes ("[Xen-devel] [PATCH 4 of 8 v2] autoconf: run 
> > libuuid test under Linux only"):
> >> autoconf: run libuuid test under Linux only
> >> +AS_IF([test "x$host_os" == "xlinux-gnu"], [
> >> +    AC_CHECK_LIB([uuid], [uuid_clear], [],
> >> +        [AC_MSG_ERROR([Could not find libuuid])])
> >> +])
> >
> > This seems odd to me.  Where does this linux-specificity come
> > from ?
> 
> -luuid is only used when building under Linux (see
> tools/libxl/Makefile for example), NetBSD uuid lib is different from
> linux, and doesn't require the -luuid flag to link, it doesn't even
> have the same API. Since we already check for different uuid headers
> in Linux/NetBSD, what about this:

Shouldn't this test also be checking for "Linux-like" or "BSD-like" UUID
interfaces, rather than checking specifically for those OSes directly.
We don't really care what the OS is, just which of the uuid interfaces
it happens to provide.

Such a change may well propagate to more than the configure script
though and your patch seems like a valid fix to the status quo so:

Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

(note that IanJ is away until 12 March)

> 
> 8<--------------------------------------------
> 
> autoconf: run libuuid test under Linux only
> 
> libuuid is only required to compile Xen tools under Linux, move the
> lib check together with the headers check. Also fixed a couple of hard
> tabs in tools/m4/uuid.m4.
> 
> Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
> 
> diff -r a41d13f080d9 tools/configure
> --- a/tools/configure Wed Feb 22 04:15:33 2012 +0100
> +++ b/tools/configure Wed Feb 22 14:54:22 2012 +0100
> @@ -6330,6 +6330,53 @@ else
>  fi
> 
> 
> +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_clear
> in -luuid" >&5
> +$as_echo_n "checking for uuid_clear in -luuid... " >&6; }
> +if test "${ac_cv_lib_uuid_uuid_clear+set}" = set; then :
> +  $as_echo_n "(cached) " >&6
> +else
> +  ac_check_lib_save_LIBS=$LIBS
> +LIBS="-luuid  $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 uuid_clear ();
> +int
> +main ()
> +{
> +return uuid_clear ();
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_link "$LINENO"; then :
> +  ac_cv_lib_uuid_uuid_clear=yes
> +else
> +  ac_cv_lib_uuid_uuid_clear=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_uuid_uuid_clear" >&5
> +$as_echo "$ac_cv_lib_uuid_uuid_clear" >&6; }
> +if test "x$ac_cv_lib_uuid_uuid_clear" = x""yes; then :
> +  cat >>confdefs.h <<_ACEOF
> +#define HAVE_LIBUUID 1
> +_ACEOF
> +
> +  LIBS="-luuid $LIBS"
> +
> +else
> +  as_fn_error $? "cannot find libuuid" "$LINENO" 5
> +fi
> +
>  else
>      ac_fn_c_check_header_mongrel "$LINENO" "uuid.h"
> "ac_cv_header_uuid_h" "$ac_includes_default"
>  if test "x$ac_cv_header_uuid_h" = x""yes; then :
> @@ -6826,53 +6873,6 @@ if test "x$ac_cv_lib_rt_clock_gettime" =
> 
>  fi
> 
> -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_clear in -luuid" 
> >&5
> -$as_echo_n "checking for uuid_clear in -luuid... " >&6; }
> -if test "${ac_cv_lib_uuid_uuid_clear+set}" = set; then :
> -  $as_echo_n "(cached) " >&6
> -else
> -  ac_check_lib_save_LIBS=$LIBS
> -LIBS="-luuid  $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 uuid_clear ();
> -int
> -main ()
> -{
> -return uuid_clear ();
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_link "$LINENO"; then :
> -  ac_cv_lib_uuid_uuid_clear=yes
> -else
> -  ac_cv_lib_uuid_uuid_clear=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_uuid_uuid_clear" >&5
> -$as_echo "$ac_cv_lib_uuid_uuid_clear" >&6; }
> -if test "x$ac_cv_lib_uuid_uuid_clear" = x""yes; then :
> -  cat >>confdefs.h <<_ACEOF
> -#define HAVE_LIBUUID 1
> -_ACEOF
> -
> -  LIBS="-luuid $LIBS"
> -
> -else
> -  as_fn_error $? "Could not find libuuid" "$LINENO" 5
> -fi
> -
>  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yajl_alloc in -lyajl" 
> >&5
>  $as_echo_n "checking for yajl_alloc in -lyajl... " >&6; }
>  if test "${ac_cv_lib_yajl_yajl_alloc+set}" = set; then :
> diff -r a41d13f080d9 tools/configure.ac
> --- a/tools/configure.ac      Wed Feb 22 04:15:33 2012 +0100
> +++ b/tools/configure.ac      Wed Feb 22 14:54:22 2012 +0100
> @@ -118,8 +118,6 @@ AC_SUBST(libgcrypt)
>  AC_CHECK_LIB([pthread], [pthread_create], [] ,
>      [AC_MSG_ERROR([Could not find libpthread])])
>  AC_CHECK_LIB([rt], [clock_gettime])
> -AC_CHECK_LIB([uuid], [uuid_clear], [],
> -    [AC_MSG_ERROR([Could not find libuuid])])
>  AC_CHECK_LIB([yajl], [yajl_alloc], [],
>      [AC_MSG_ERROR([Could not find yajl])])
>  AC_CHECK_LIB([z], [deflateCopy], [], [AC_MSG_ERROR([Could not find zlib])])
> diff -r a41d13f080d9 tools/m4/uuid.m4
> --- a/tools/m4/uuid.m4        Wed Feb 22 04:15:33 2012 +0100
> +++ b/tools/m4/uuid.m4        Wed Feb 22 14:54:22 2012 +0100
> @@ -2,9 +2,11 @@ AC_DEFUN([AX_CHECK_UUID],
>  [if test "x$host_os" == "xlinux-gnu"
>  then
>      AC_CHECK_HEADER([uuid/uuid.h],,
> -         [AC_MSG_ERROR([cannot find uuid headers])])
> +        [AC_MSG_ERROR([cannot find uuid headers])])
> +    AC_CHECK_LIB([uuid], [uuid_clear], [],
> +        [AC_MSG_ERROR([cannot find libuuid])])
>  else
>      AC_CHECK_HEADER([uuid.h],,
> -         [AC_MSG_ERROR([cannot find uuid headers])])
> +        [AC_MSG_ERROR([cannot find uuid headers])])
>  fi
>  ])
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.