apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <wr...@rowe-clan.net>
Subject Re: svn commit: r382541 - in /apr/apr/trunk: configure.in misc/unix/rand.c
Date Sat, 04 Mar 2006 00:10:01 GMT
This patch seems to behave correctly in every one of my cases.  I'd appreciate
more eyeballs and at least 2 +1's before applying it to 1.2.x for the next
release.  It does in fact behave wonderfully on the specific Mac OS/X 10.3 box
which was giving me problems, due to a binary distro of python injecting
/usr/lib/libuuid.so[*] set of files without corresponding include files.
The function's detected, then the detection is discarded due to a failed test
compilation.

Oh it seems the ${nl}'s were superfluous, but since I don't know if every flavor
of autoconf + local shell behaves nicely, I'm tempted to leave them.

Comments/feedback/votes please?  You may want to push misc/unix/rand.c to
head in order to also check the new conditionals on our uuid_s_ok result-check.

Bill



wrowe@apache.org wrote:
> Author: wrowe
> Date: Thu Mar  2 14:53:49 2006
> New Revision: 382541
> 
> URL: http://svn.apache.org/viewcvs?rev=382541&view=rev
> Log:
> 
>   Address bug 37999 and other exceptions to the existing uuid detection code;
>   favor uuid_create or uuid_generate if they live in the clib, and perform
>   a true compile/link test on our suspected success case, disabling the
>   code if this fails.
> 
>   More sets of eyes and feedback to dev@apr requested before we backport this
>   patch to APR 1.2.x
>   
> Authored by: wrowe, maxb
> 
> Modified:
>     apr/apr/trunk/configure.in
>     apr/apr/trunk/misc/unix/rand.c
> 
> Modified: apr/apr/trunk/configure.in
> URL: http://svn.apache.org/viewcvs/apr/apr/trunk/configure.in?rev=382541&r1=382540&r2=382541&view=diff
> ==============================================================================
> --- apr/apr/trunk/configure.in (original)
> +++ apr/apr/trunk/configure.in Thu Mar  2 14:53:49 2006
> @@ -1803,15 +1803,61 @@
>  
>  dnl ----------------------------- Checking for UUID Support 
>  echo "${nl}Checking for OS UUID Support..."
> -osuuid="0"
>  
> -AC_CHECK_HEADERS(uuid/uuid.h uuid.h)
> +AC_CHECK_HEADERS(uuid.h sys/uuid.h uuid/uuid.h, break)
>  
> -# Check for uuid_generate in libc or libuuid
> +apr_revert_save_LIBS=$LIBS
> +
> +# Prefer the flavor(s) that live in libc;
> +AC_SEARCH_LIBS(uuid_create, uuid)
>  AC_SEARCH_LIBS(uuid_generate, uuid)
> +if test "$ac_cv_search_uuid_create" = "none required" -o \
> +        "$ac_cv_search_uuid_generate" = "none required"; then
> + LIBS=$apr_revert_save_LIBS
> +fi
> +
> +AC_CHECK_FUNCS(uuid_create uuid_generate)
>  
> -AC_CHECK_FUNCS([uuid_generate uuid_create], [osuuid=1; break])
> +AC_CACHE_CHECK([for os uuid usability], [apr_cv_osuuid], [
> +# Ensure this test closely mirrors misc/unix/rand.c!
> +uuid_includes=" ${nl}
> +#if defined(HAVE_SYS_TYPES_H) ${nl}
> +#include <sys/types.h> ${nl}
> +#endif ${nl}
> +#if defined(HAVE_UNISTD_H) ${nl}
> +#include <unistd.h> ${nl}
> +#endif ${nl}
> +#if defined(HAVE_UUID_H) ${nl}
> +#include <uuid.h> ${nl}
> +#elif defined(HAVE_SYS_UUID_H) ${nl}
> +#include <sys/uuid.h> ${nl}
> +#elif defined(HAVE_UUID_UUID_H) ${nl}
> +#include <uuid/uuid.h> ${nl}
> +#endif ${nl}
> +"
> + apr_cv_osuuid=no
> + if test $ac_cv_func_uuid_create = yes; then
> +  AC_TRY_LINK([$uuid_includes], [
> +    uuid_t g;
> +    uint32_t s;
> +    uuid_create(&g, &s);
> +    if (s == uuid_s_ok) s = 0;
> +  ], [apr_cv_osuuid=yes], [apr_cv_func_uuid_create=no])
> + fi
> + if test $ac_cv_func_uuid_generate = yes; then
> +  AC_TRY_LINK([$uuid_includes], [
> +    uuid_t g;
> +    uuid_generate(g);
> +  ], [apr_cv_osuuid=yes], [apr_cv_func_uuid_generate=no])
> + fi 
> +])
>  
> +if test $apr_cv_osuuid = yes; then
> +  osuuid="1"
> +else
> +  osuuid="0"
> +  LIBS=$apr_revert_save_LIBS
> +fi
>  AC_SUBST(osuuid)
>  
>  
> 
> Modified: apr/apr/trunk/misc/unix/rand.c
> URL: http://svn.apache.org/viewcvs/apr/apr/trunk/misc/unix/rand.c?rev=382541&r1=382540&r2=382541&view=diff
> ==============================================================================
> --- apr/apr/trunk/misc/unix/rand.c (original)
> +++ apr/apr/trunk/misc/unix/rand.c Thu Mar  2 14:53:49 2006
> @@ -35,8 +35,10 @@
>  #if APR_HAVE_SYS_UN_H
>  #include <sys/un.h>
>  #endif
> -#ifdef HAVE_UUID_H
> +#if defined(HAVE_UUID_H)
>  #include <uuid.h>
> +#elif defined(HAVE_SYS_UUID_H)
> +#include <sys/uuid.h>
>  #elif defined(HAVE_UUID_UUID_H)
>  #include <uuid/uuid.h>
>  #endif
> @@ -45,6 +47,8 @@
>  #define SHUT_RDWR 2
>  #endif
>  
> +#if APR_HAS_OS_UUID
> +
>  #if defined(HAVE_UUID_CREATE)
>  
>  APR_DECLARE(apr_status_t) apr_os_uuid_get(unsigned char *uuid_data)
> @@ -71,6 +75,8 @@
>      return APR_SUCCESS;
>  }
>  #endif 
> +
> +#endif /* APR_HAS_OS_UUID */
>  
>  #if APR_HAS_RANDOM
>  


Mime
View raw message