Skip to content

bpo-11063: Add a configure check for uuid_generate_time_safe #4287

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Nov 8, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 2 additions & 9 deletions Modules/_uuidmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;
Expand Down
31 changes: 31 additions & 0 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -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 :
Expand Down
12 changes: 12 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions pyconfig.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down