[Python-checkins] cpython: Closes #27976: Deprecate bundled full copy of libffi
zach.ware
python-checkins at python.org
Fri Sep 9 20:01:33 EDT 2016
https://hg.python.org/cpython/rev/3e02187e50df
changeset: 103504:3e02187e50df
user: Zachary Ware <zachary.ware at gmail.com>
date: Fri Sep 09 17:01:21 2016 -0700
summary:
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.
files:
Doc/whatsnew/3.6.rst | 10 ++++++++++
Misc/NEWS | 3 +++
configure | 24 ++++++++++++++++++++----
configure.ac | 22 +++++++++++++++++++---
setup.py | 10 +++++++---
5 files changed, 59 insertions(+), 10 deletions(-)
diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst
--- a/Doc/whatsnew/3.6.rst
+++ b/Doc/whatsnew/3.6.rst
@@ -1010,6 +1010,16 @@
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
------------
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -311,6 +311,9 @@
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
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -9851,10 +9851,26 @@
# 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
-
+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/ *$//'`"
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -2737,9 +2737,25 @@
# 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/ *$//'`"
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -1911,6 +1911,9 @@
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 @@
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] == '':
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list