summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2017-11-08 23:09:16 +0300
committerGitHub <noreply@github.com>2017-11-08 23:09:16 +0300
commit9a10ff4deb2494e22bc0dbea3e3a6f9e8354d995 (patch)
treed860e1b145cf9e9e144ada162d731bb5ea78108d
parentbf9d317626eebcf79bd0756b4dd43df82d5cc186 (diff)
downloadcpython-git-9a10ff4deb2494e22bc0dbea3e3a6f9e8354d995.tar.gz
bpo-11063: Add a configure check for uuid_generate_time_safe (GH-4287)
-rw-r--r--Modules/_uuidmodule.c11
-rwxr-xr-xconfigure31
-rw-r--r--configure.ac12
-rw-r--r--pyconfig.h.in3
4 files changed, 48 insertions, 9 deletions
diff --git a/Modules/_uuidmodule.c b/Modules/_uuidmodule.c
index 88c40ce353..d4bc3c7b0d 100644
--- a/Modules/_uuidmodule.c
+++ b/Modules/_uuidmodule.c
@@ -4,17 +4,10 @@
#include <uuid/uuid.h>
-/* bpo-11063: libuuid on macOS doesn't provide uuid_generate_time_safe(),
- only uuid_generate_time(). */
-#ifndef __APPLE__
-# define HAVE_TIME_SAFE
-#endif
-
-
static PyObject *
py_uuid_generate_time_safe(void)
{
-#ifdef HAVE_TIME_SAFE
+#ifdef HAVE_UUID_GENERATE_TIME_SAFE
uuid_t out;
int res;
@@ -45,7 +38,7 @@ PyInit__uuid(void)
{
PyObject *mod;
assert(sizeof(uuid_t) == 16);
-#ifdef HAVE_TIME_SAFE
+#ifdef HAVE_UUID_GENERATE_TIME_SAFE
int has_uuid_generate_time_safe = 1;
#else
int has_uuid_generate_time_safe = 0;
diff --git a/configure b/configure
index 0edbb3e862..7944f8fe5d 100755
--- a/configure
+++ b/configure
@@ -9512,6 +9512,37 @@ _ACEOF
fi
# Dynamic linking for HP-UX
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time_safe" >&5
+$as_echo_n "checking for uuid_generate_time_safe... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <uuid/uuid.h>
+int
+main ()
+{
+
+#ifndef uuid_generate_time_safe
+uuid_t out;
+uuid_generate_time_safe(out);
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_UUID_GENERATE_TIME_SAFE 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sem_init" >&5
$as_echo_n "checking for library containing sem_init... " >&6; }
if ${ac_cv_search_sem_init+:} false; then :
diff --git a/configure.ac b/configure.ac
index c773806458..743e0625dc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2677,6 +2677,18 @@ AC_CHECK_LIB(sendfile, sendfile)
AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
+AC_MSG_CHECKING(for uuid_generate_time_safe)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <uuid/uuid.h>]], [[
+#ifndef uuid_generate_time_safe
+uuid_t out;
+uuid_generate_time_safe(out);
+#endif
+]])],
+ [AC_DEFINE(HAVE_UUID_GENERATE_TIME_SAFE, 1, Define if uuid_generate_time_safe() exists.)
+ AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)]
+)
+
AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
# posix4 on Solaris 2.6
# pthread (first!) on Linux
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 5f8b09a618..6e0f3e8eeb 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -1187,6 +1187,9 @@
/* Define to 1 if you have the <utime.h> header file. */
#undef HAVE_UTIME_H
+/* Define if uuid_generate_time_safe() exists. */
+#undef HAVE_UUID_GENERATE_TIME_SAFE
+
/* Define to 1 if you have the `wait3' function. */
#undef HAVE_WAIT3