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.
This commit is contained in:
parent
b7f3c944d1
commit
935043d1ac
|
@ -1010,6 +1010,16 @@ Build and C API Changes
|
||||||
Deprecated
|
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
|
New Keywords
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
|
|
@ -311,6 +311,9 @@ Tests
|
||||||
Build
|
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
|
- Issue #27983: Cause lack of llvm-profdata tool when using clang as
|
||||||
required for PGO linking to be a configure time error rather than
|
required for PGO linking to be a configure time error rather than
|
||||||
make time when --with-optimizations is enabled. Also improve our
|
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.
|
# Check whether --with-system_ffi was given.
|
||||||
if test "${with_system_ffi+set}" = set; then :
|
if test "${with_system_ffi+set}" = set; then :
|
||||||
withval=$with_system_ffi;
|
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
|
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/ *$//'`"
|
LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
|
||||||
else
|
else
|
||||||
|
|
22
configure.ac
22
configure.ac
|
@ -2737,9 +2737,25 @@ AC_MSG_RESULT($with_system_expat)
|
||||||
# Check for use of the system libffi library
|
# Check for use of the system libffi library
|
||||||
AC_MSG_CHECKING(for --with-system-ffi)
|
AC_MSG_CHECKING(for --with-system-ffi)
|
||||||
AC_ARG_WITH(system_ffi,
|
AC_ARG_WITH(system_ffi,
|
||||||
AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
|
AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),,,)
|
||||||
[],
|
|
||||||
[with_system_ffi="no"])
|
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
|
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/ *$//'`"
|
LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
|
||||||
|
|
10
setup.py
10
setup.py
|
@ -1911,6 +1911,9 @@ class PyBuildExt(build_ext):
|
||||||
if host_platform == 'darwin':
|
if host_platform == 'darwin':
|
||||||
return self.configure_ctypes_darwin(ext)
|
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')
|
srcdir = sysconfig.get_config_var('srcdir')
|
||||||
ffi_builddir = os.path.join(self.build_temp, 'libffi')
|
ffi_builddir = os.path.join(self.build_temp, 'libffi')
|
||||||
ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
|
ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
|
||||||
|
@ -2007,13 +2010,14 @@ class PyBuildExt(build_ext):
|
||||||
libraries=math_libs)
|
libraries=math_libs)
|
||||||
self.extensions.extend([ext, ext_test])
|
self.extensions.extend([ext, ext_test])
|
||||||
|
|
||||||
if not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"):
|
|
||||||
return
|
|
||||||
|
|
||||||
if host_platform == 'darwin':
|
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
|
# OS X 10.5 comes with libffi.dylib; the include files are
|
||||||
# in /usr/include/ffi
|
# in /usr/include/ffi
|
||||||
inc_dirs.append('/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")]
|
ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")]
|
||||||
if not ffi_inc or ffi_inc[0] == '':
|
if not ffi_inc or ffi_inc[0] == '':
|
||||||
|
|
Loading…
Reference in New Issue