From 857298100b9a5fa5bbcafb2ff578418bc6750e58 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Tue, 7 Sep 2010 14:55:24 +0000 Subject: Merged revisions 84584 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ........ r84584 | antoine.pitrou | 2010-09-07 16:52:42 +0200 (mar., 07 sept. 2010) | 4 lines Issue #4026: Make the fcntl extension build under AIX. Patch by Sébastien Sablé. ........ --- Misc/NEWS | 3 +++ configure | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- configure.in | 18 +++++++++++-- pyconfig.h.in | 3 +++ setup.py | 6 ++++- 5 files changed, 103 insertions(+), 8 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index b205fa5..c470e44 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -275,6 +275,9 @@ Extension Modules Build ----- +- Issue #4026: Make the fcntl extension build under AIX. Patch by Sébastien + Sablé. + - Issue #3101: Helper functions _add_one_to_index_C() and _add_one_to_index_F() become _Py_add_one_to_index_C() and _Py_add_one_to_index_F(), respectively. diff --git a/configure b/configure index 5f4e6d1..358ef93 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 81582 . +# From configure.in Revision: 84368 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.65 for python 2.7. # @@ -9742,6 +9742,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock" >&5 $as_echo_n "checking for flock... " >&6; } +have_flock=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9759,14 +9760,84 @@ if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_FLOCK 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else + have_flock=yes + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_flock" >&5 +$as_echo "$have_flock" >&6; } + +if test "$have_flock" = yes ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if flock requires additional libraries." >&5 +$as_echo_n "checking if flock requires additional libraries.... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + +int +main () +{ +void *p = flock; flock(0, 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock in -lbsd" >&5 +$as_echo_n "checking for flock in -lbsd... " >&6; } +if test "${ac_cv_lib_bsd_flock+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $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 flock (); +int +main () +{ +return flock (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_bsd_flock=yes +else + ac_cv_lib_bsd_flock=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_bsd_flock" >&5 +$as_echo "$ac_cv_lib_bsd_flock" >&6; } +if test "x$ac_cv_lib_bsd_flock" = x""yes; then : + + +$as_echo "#define FLOCK_NEEDS_LIBBSD 1" >>confdefs.h + + +fi + + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpagesize" >&5 $as_echo_n "checking for getpagesize... " >&6; } diff --git a/configure.in b/configure.in index cbcbbf0..1d13b18 100644 --- a/configure.in +++ b/configure.in @@ -2775,13 +2775,27 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]) AC_MSG_CHECKING(for flock) +have_flock=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include ]], [[void* p = flock]])], [AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.) - AC_MSG_RESULT(yes)], - [AC_MSG_RESULT(no) + have_flock=yes ]) +AC_MSG_RESULT($have_flock) + +if test "$have_flock" = yes ; then + AC_MSG_CHECKING(if flock requires additional libraries.) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + ]], [[void *p = flock; flock(0, 0)]])], + [AC_MSG_RESULT(no)], + [AC_MSG_RESULT(yes) + AC_CHECK_LIB(bsd,flock, [ + AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.) + ]) + ]) +fi AC_MSG_CHECKING(for getpagesize) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ diff --git a/pyconfig.h.in b/pyconfig.h.in index 865f7be..2c3c4fb 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -36,6 +36,9 @@ /* Define if --enable-ipv6 is specified */ #undef ENABLE_IPV6 +/* Define if flock needs to be linked with bsd library */ +#undef FLOCK_NEEDS_LIBBSD + /* Define if getpgrp() must be called as getpgrp(0). */ #undef GETPGRP_HAVE_ARG diff --git a/setup.py b/setup.py index 36257ed..0ed2bae 100644 --- a/setup.py +++ b/setup.py @@ -529,7 +529,11 @@ class PyBuildExt(build_ext): # supported...) # fcntl(2) and ioctl(2) - exts.append( Extension('fcntl', ['fcntlmodule.c']) ) + libs = [] + if (config_h_vars.get('FLOCK_NEEDS_LIBBSD', False)): + # May be necessary on AIX for flock function + libs = ['bsd'] + exts.append( Extension('fcntl', ['fcntlmodule.c'], libraries=libs) ) # pwd(3) exts.append( Extension('pwd', ['pwdmodule.c']) ) # grp(3) -- cgit v0.12