diff options
author | Zachary Ware <zachary.ware@gmail.com> | 2016-09-10 00:01:21 (GMT) |
---|---|---|
committer | Zachary Ware <zachary.ware@gmail.com> | 2016-09-10 00:01:21 (GMT) |
commit | 935043d1ac19d07ac48233c6175250e66a7bbebd (patch) | |
tree | b5a4d3b5202fbe75b904e8c35e141891ceb18dd6 | |
parent | b7f3c944d1d0865ce797848e3a40c3ad9435b698 (diff) | |
download | cpython-935043d1ac19d07ac48233c6175250e66a7bbebd.zip cpython-935043d1ac19d07ac48233c6175250e66a7bbebd.tar.gz cpython-935043d1ac19d07ac48233c6175250e66a7bbebd.tar.bz2 |
Closes #27976: Deprecate bundled full copy of libffi
Builds on non-OSX UNIX now default to using the system libffi, and warn if the
bundled copy is used.
-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] == '': |