diff options
-rw-r--r-- | Doc/whatsnew/3.6.rst | 10 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rwxr-xr-x | configure | 20 | ||||
-rw-r--r-- | configure.ac | 22 | ||||
-rw-r--r-- | setup.py | 10 |
5 files changed, 57 insertions, 8 deletions
diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst index ec2f2e0..d3dd337 100644 --- a/Doc/whatsnew/3.6.rst +++ b/Doc/whatsnew/3.6.rst @@ -1010,6 +1010,16 @@ Build and C API Changes Deprecated ========== +Deprecated Build Options +------------------------ + +The ``--with-system-ffi`` configure flag is now on by default on non-OSX UNIX +platforms. It may be disabled by using ``--without-system-ffi``, but using the +flag is deprecated and will not be accepted in Python 3.7. OSX is unaffected +by this change. Note that many OS distributors already use the +``--with-system-ffi`` flag when building their system Python. + + New Keywords ------------ @@ -311,6 +311,9 @@ Tests Build ----- +- Issue #27976: Deprecate building _ctypes with the bundled copy of libffi on + non-OSX UNIX platforms. + - Issue #27983: Cause lack of llvm-profdata tool when using clang as required for PGO linking to be a configure time error rather than make time when --with-optimizations is enabled. Also improve our @@ -9851,11 +9851,27 @@ $as_echo_n "checking for --with-system-ffi... " >&6; } # Check whether --with-system_ffi was given. if test "${with_system_ffi+set}" = set; then : withval=$with_system_ffi; -else - with_system_ffi="no" fi +case "$with_system_ffi" in + "") + case $ac_sys_system in + Darwin) + with_system_ffi="no" + ;; + *) + with_system_ffi="yes" + ;; + esac + ;; + yes|no) + ;; + *) + as_fn_error $? "--with-system-ffi accepts no arguments" "$LINENO" 5 + ;; +esac + if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" else diff --git a/configure.ac b/configure.ac index 57cf46f..269c41e 100644 --- a/configure.ac +++ b/configure.ac @@ -2737,9 +2737,25 @@ AC_MSG_RESULT($with_system_expat) # Check for use of the system libffi library AC_MSG_CHECKING(for --with-system-ffi) AC_ARG_WITH(system_ffi, - AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]), - [], - [with_system_ffi="no"]) + AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),,,) + +case "$with_system_ffi" in + "") + case $ac_sys_system in + Darwin) + with_system_ffi="no" + ;; + *) + with_system_ffi="yes" + ;; + esac + ;; + yes|no) + ;; + *) + AC_MSG_ERROR([--with-system-ffi accepts no arguments]) + ;; +esac if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" @@ -1911,6 +1911,9 @@ class PyBuildExt(build_ext): if host_platform == 'darwin': return self.configure_ctypes_darwin(ext) + print('warning: building with the bundled copy of libffi is' + ' deprecated on this platform. It will not be' + ' distributed with Python 3.7') srcdir = sysconfig.get_config_var('srcdir') ffi_builddir = os.path.join(self.build_temp, 'libffi') ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules', @@ -2007,13 +2010,14 @@ class PyBuildExt(build_ext): libraries=math_libs) self.extensions.extend([ext, ext_test]) - if not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"): - return - if host_platform == 'darwin': + if '--with-system-ffi' not in sysconfig.get_config_var("CONFIG_ARGS"): + return # OS X 10.5 comes with libffi.dylib; the include files are # in /usr/include/ffi inc_dirs.append('/usr/include/ffi') + elif '--without-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"): + return ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")] if not ffi_inc or ffi_inc[0] == '': |