python32 stable port information

Info2: <<
Package: python%type_pkg[python]
Version: 3.2.3
Revision: 2
Type: python 3.2
Maintainer: Daniel Johnson
Depends: <<
%N-shlibs (= %v-%r),
blt-shlibs,
bzip2-shlibs,
gdbm3-shlibs,
libgettext8-shlibs,
libncursesw5-shlibs,
openssl100-shlibs (>= 1.0.1-1),
readline5-shlibs,
sqlite3-shlibs (>= 3.7.2-2),
tcltk (>= 8.4.1-1),
x11
<<
BuildConflicts: libquicktime0
BuildDepends: <<
blt-dev (>= 2.4z-15),
bzip2-dev,
fink (>= 0.32),
gdbm3,
gettext-bin,
gettext-tools,
libgettext8-dev,
libncursesw5,
readline5,
sqlite3-dev (>= 3.7.2-2),
openssl100-dev (>= 1.0.1-1),
tcltk-dev (>= 8.4.1-1),
x11-dev
<<
Provides: argparse-py%type_pkg[python], futures-py%type_pkg[python]
Source: http://python.org/ftp/python/%v/Python-%v.tar.xz
Source-MD5: 187564726f2c1473d301c586acc24847
Source2: http://www.python.org/ftp/python/doc/%v/python-%v-docs-html.tar.bz2
Source2-MD5: c970e7bcbc3268a3dbc2de5c15b5a3d3
PatchFile: %n.patch
PatchFile-MD5: 5f71e6073af75b59107f5153be15593f
PatchScript: sed 's|@PREFIX@|%p|g' < %{PatchFile} | patch -p1

UseMaxBuildJobs: true
ConfigureParams: --enable-shared --with-dbmliborder=gdbm --enable-loadable-sqlite-extensions
CompileScript: <<
#!/bin/sh -ex
darwin_vers=`uname -r | cut -d. -f1`
if [ "$darwin_vers" = 11 ]; then
perl -pi -e 's/ -lSystemStubs//' ./configure
perl -pi -e 's/-O3/-fwrapv -O3/' ./configure
fi
if [ "%m" = "x86_64" ]; then
#perl -pi.bak -e 's|num_missing != 2:|num_missing != 2:|g' ./setup.py
# Architecture:x86_64 has tcltk-8.5.x, other arch have 8.4.x
perl -pi.bak -e "s/8.4\'/8.5\'/" ./setup.py
fi
%{default_script}
<<

InfoTest: <<
TestScript: <<
LANG=en_US.UTF-8 make -k test EXTRATESTOPTS='-w -x test_distutils test_argparse test_httpservers test_import' || exit 2
<<
<<

InstallScript: <<
#!/bin/sh -ex
# install fails with -j greater than 1
export MAKEFLAGS=-j1
make install DESTDIR=%d

# we don't want -lintl to appear in LIBS otherwise python-config will propagate it
perl -pi -e 's/-lintl //' %i/lib/python%type_raw[python]/config-%type_raw[python]m/Makefile

# fix all main things to be python-versioned filenames with
# unversioned symlinks to them
pushd %i/bin
for f in idle3 pydoc3; do
mv ${f} ${f}-%type_raw[python]
ln -s ${f}-%type_raw[python] %i/bin/${f}
done
#Remove this for now to avoid conflicting with 'python' package.
rm 2to3
popd

ln -s python%type_raw[python].1 %i/share/man/man1/python3.1

# install some docs and other useful tidbits
rm -rf Misc/RPM
/bin/cp -R Misc Tools %i/lib/python%type_raw[python]
mkdir -p %i/share/doc/%n/html
/bin/cp -R ../python-%v-docs-html/ %i/share/doc/%n/html
<<
SplitOff: <<
Package: %N-shlibs
Depends: libgettext8-shlibs
Files: lib/python%type_raw[python]/config-%type_raw[python]m/libpython%type_raw[python]m.dylib
Shlibs: %p/lib/python3.2/config-%type_raw[python]m/libpython3.2m.dylib 3.2.0 %n (>= 3.2-1)
DocFiles: README LICENSE
<<
SplitOff2: <<
Package: python3
Depends: %N (>= %v-%r)
Files: <<
bin/idle3
bin/pydoc3
bin/python3
bin/python3-config
lib/pkgconfig/python3.pc
share/man/man1/python3.1
<<
DocFiles: README LICENSE
Description: Generic "python3" command that invokes python%type_pkg[python]
<<
DocFiles: README LICENSE
Description: Interpreted, object-oriented language
DescDetail: <<
Python is often compared to Tcl, Perl, Scheme or Java.
This package installs unix python - not the OSX Framework version.
Builds a two-level namespace dynamic libpython (needed for koffice).

The interpretter is installed as "python%type_raw[python]", and all associated
commands are similarly named with the python-version in them. To get
the simple "python3" command, install the fink package "python3" (note:
the "python3" command there is not guaranteed to be python%type_raw[python]!).
<<
DescUsage: <<
python%type_raw[python] changes the compiler options used to compile
third-party python modules. Please do not add %type_raw[python] variants
to them without actually testing that they build cleanly.
<<

DescPackaging: <<
Patch a lot of things to impliment shared-lib support for
non-Framework build on Darwin.

Static libpython is installed in lib/pythonX.X/config-%type_raw[python]m/ but
shared goes in %p/lib by default. Fink's packaging has always
placed manually-built shared lib in config/ along side static,
This gives consistency regardless of -search_paths_first.
Continue this practice so that -pyXX varianted packages don't
need special-casing for certain variants.

Make sure all compiled modules link against libpython%type_raw[python] (and
propagate this to third-party compiled modules) to ensure that
all symbols resolved at compile-time to avoid packager
mistakes and user runtime surprises.

Play lots of games to make sure we get expected support
libraries. Also make sure -L/sw/lib/system-openssl is passed
before -L/sw (build system seems to confuse standard meanings
and uses of CFLAGS vs CPPFLAGS vs LDFLAGS) but avoid
propagating into modules that compile using distutils.

Adjust "python3" unversioned link to be a symlink not a hard link.

Shared lib is buried next to static one instead of being in
%p/lib because that's where it's always been in the fink
package series. Why would they be in different places? Patch
-config script to continue this tradition (bug in previous
versions accidentally did the Right Thing here).

New in 3.2, .pyc files are saved in the __pycache__ directory
at the same level as the matching .py file. Any packages that
expect the .pyc file to be next to the .py file will need adjustment.

The .pyc and .so files also include the python version in the name.
<<
DescPort: <<
libpython needs to link to CF because that lib has the parent
thread that load modules that need to have CF available. See:
http://bugs.python.org/issue7085

bsddb is gone so drop db* patch and dep.
Patch setup.py to find ncursesw headers and drop libncurses5 dep.
Ensure $(LDFLAGS) is used linking libpython or else it can't find libintl.

test_ctypes fails with clang unless _ctypes/_ctypes_test.c is built
with -O0 so force that in setup.py.

Patch ctypes to look in %p/lib for libraries.
<<
License: OSI-Approved
Homepage: http://www.python.org
<<

python32 stable port .patch

diff -ru Python-3.2.2.orig/Lib/ctypes/macholib/dyld.py Python-3.2.2/Lib/ctypes/macholib/dyld.py
--- Python-3.2.2.orig/Lib/ctypes/macholib/dyld.py 2011-09-03 12:16:40.000000000 -0400
+++ Python-3.2.2/Lib/ctypes/macholib/dyld.py 2011-12-29 19:02:03.000000000 -0500
@@ -23,6 +23,7 @@

DEFAULT_LIBRARY_FALLBACK = [
os.path.expanduser("~/lib"),
+ "@PREFIX@/lib",
"/usr/local/lib",
"/lib",
"/usr/lib",
diff -ru Python-3.2.2.orig/Makefile.pre.in Python-3.2.2/Makefile.pre.in
--- Python-3.2.2.orig/Makefile.pre.in 2011-09-03 12:16:45.000000000 -0400
+++ Python-3.2.2/Makefile.pre.in 2011-12-29 19:00:45.000000000 -0500
@@ -463,8 +463,7 @@
$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^

libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
- $(CC) -dynamiclib -Wl,-single_module $(PY_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
-
+ $(CC) -dynamiclib -Wl,-single_module $(LDFLAGS) @LIBTOOL_CRUFT@ -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LDLAST)

libpython$(VERSION).sl: $(LIBRARY_OBJS)
$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST)
@@ -837,7 +836,7 @@
# Install the interpreter with $(VERSION) affixed
# This goes into $(exec_prefix)
altbininstall: $(BUILDPYTHON)
- @for i in $(BINDIR) $(LIBDIR); \
+ @for i in $(BINDIR) $(LIBDIR) $(LIBPL); \
do \
if test ! -d $(DESTDIR)$$i; then \
echo "Creating directory $$i"; \
@@ -850,15 +849,15 @@
if test -f $(DESTDIR)$(BINDIR)/$(PYTHON)$(VERSION)$(EXE) -o -h $(DESTDIR)$(BINDIR)/$(PYTHON)$(VERSION)$(EXE); \
then rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
fi; \
- (cd $(DESTDIR)$(BINDIR); $(LN) python$(LDVERSION)$(EXE) python$(VERSION)$(EXE)); \
+ (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(LDVERSION)$(EXE) python$(VERSION)$(EXE)); \
fi
if test -f $(LDLIBRARY); then \
if test -n "$(DLLLIBRARY)" ; then \
$(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \
else \
- $(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+ $(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBPL)/$(INSTSONAME); \
if test $(LDLIBRARY) != $(INSTSONAME); then \
- (cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \
+ (cd $(DESTDIR)$(LIBPL); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \
fi \
fi; \
if test -n "$(PY3LIBRARY)"; then \
@@ -872,7 +871,7 @@
then rm -f $(DESTDIR)$(BINDIR)/$(PYTHON)3$(EXE); \
else true; \
fi
- (cd $(DESTDIR)$(BINDIR); $(LN) python$(VERSION)$(EXE) $(PYTHON)3$(EXE))
+ (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) $(PYTHON)3$(EXE))
-if test "$(VERSION)" != "$(LDVERSION)"; then \
rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-config; \
(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(LDVERSION)-config python$(VERSION)-config); \
diff -ru Python-3.2.2.orig/Misc/python-config.in Python-3.2.2/Misc/python-config.in
--- Python-3.2.2.orig/Misc/python-config.in 2011-09-03 12:16:45.000000000 -0400
+++ Python-3.2.2/Misc/python-config.in 2011-12-29 19:00:45.000000000 -0500
@@ -47,12 +47,10 @@
elif opt in ('--libs', '--ldflags'):
libs = getvar('LIBS').split() + getvar('SYSLIBS').split()
libs.append('-lpython' + pyver + sys.abiflags)
- # add the prefix/lib/pythonX.Y/config dir, but only if there is no
- # shared library in prefix/lib/.
+ # add the prefix/lib/pythonX.Y/config dir (fink keeps shared
+ # library there too)
if opt == '--ldflags':
- if not getvar('Py_ENABLE_SHARED'):
- libs.insert(0, '-L' + getvar('LIBPL'))
- libs.extend(getvar('LINKFORSHARED').split())
+ libs.insert(0, '-L' + getvar('LIBPL'))
print(' '.join(libs))

elif opt == '--extension-suffix':
diff -ru Python-3.2.2.orig/Misc/python.pc.in Python-3.2.2/Misc/python.pc.in
--- Python-3.2.2.orig/Misc/python.pc.in 2011-09-03 12:16:45.000000000 -0400
+++ Python-3.2.2/Misc/python.pc.in 2011-12-29 19:00:45.000000000 -0500
@@ -1,7 +1,7 @@
# See: man pkg-config
prefix=@prefix@
exec_prefix=@exec_prefix@
-libdir=@libdir@
+libdir=@libdir@/python@VERSION@/config-@VERSION@@ABIFLAGS@
includedir=@includedir@

Name: Python
diff -ru Python-3.2.2.orig/Modules/_dbmmodule.c Python-3.2.2/Modules/_dbmmodule.c
--- Python-3.2.2.orig/Modules/_dbmmodule.c 2011-09-03 12:16:46.000000000 -0400
+++ Python-3.2.2/Modules/_dbmmodule.c 2011-12-29 19:00:45.000000000 -0500
@@ -20,7 +20,7 @@
static char *which_dbm = "GNU gdbm"; /* EMX port of GDBM */
#endif
#elif defined(HAVE_GDBM_NDBM_H)
-#include
+#include
static char *which_dbm = "GNU gdbm";
#elif defined(HAVE_GDBM_DASH_NDBM_H)
#include
diff -ru Python-3.2.2.orig/Modules/posixmodule.c Python-3.2.2/Modules/posixmodule.c
--- Python-3.2.2.orig/Modules/posixmodule.c 2011-09-03 12:16:46.000000000 -0400
+++ Python-3.2.2/Modules/posixmodule.c 2011-12-29 19:00:45.000000000 -0500
@@ -501,7 +501,7 @@
#endif /* MS_WINDOWS */

/* Return a dictionary corresponding to the POSIX environment table */
-#ifdef WITH_NEXT_FRAMEWORK
+#ifdef __APPLE__
/* On Darwin/MacOSX a shared library or framework has no access to
** environ directly, we must obtain it with _NSGetEnviron().
*/
@@ -528,7 +528,7 @@
d = PyDict_New();
if (d == NULL)
return NULL;
-#ifdef WITH_NEXT_FRAMEWORK
+#ifdef __APPLE__
if (environ == NULL)
environ = *_NSGetEnviron();
#endif
diff -ru Python-3.2.2.orig/configure Python-3.2.2/configure
--- Python-3.2.2.orig/configure 2011-09-03 12:16:50.000000000 -0400
+++ Python-3.2.2/configure 2011-12-29 19:00:45.000000000 -0500
@@ -4993,7 +4993,7 @@
;;
Darwin*)
LDLIBRARY='libpython$(LDVERSION).dylib'
- BLDLIBRARY='-L. -lpython$(LDVERSION)'
+ BLDLIBRARY="`pwd`/$LDLIBRARY"
RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
;;
AIX*)
@@ -7510,8 +7510,8 @@
#ARCH_RUN_32BIT="true"
fi

- LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
- LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
+ LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs"
+ LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(BINLIBDEST)/config-$(LDVERSION)/$(INSTSONAME)'
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
esac

@@ -7627,15 +7627,6 @@
# Use -undefined dynamic_lookup whenever possible (10.3 and later).
# This allows an extension to be used in any Python

- if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
- then
- if test "${enable_universalsdk}"; then
- LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
- fi
- LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
- LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
- BLDSHARED="$LDSHARED"
- else
LDSHARED='$(CC) -bundle'
LDCXXSHARED='$(CXX) -bundle'
if test "$enable_framework" ; then
@@ -7645,11 +7636,10 @@
LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
else
# No framework, use the Python app as bundle-loader
- BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
- LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
- LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
+ BLDSHARED="$LDSHARED "'$(BLDLIBRARY)'
+ LDSHARED="$LDSHARED "'-L$(BINLIBDEST)/config-$(LDVERSION) -lpython$(LDVERSION)'
+ LDCXXSHARED="$LDCXXSHARED "'-L$(BINLIBDEST)/config-$(LDVERSION) -lpython$(LDVERSION)'
fi
- fi
;;
Linux*|GNU*|QNX*)
LDSHARED='$(CC) -shared'
@@ -7758,7 +7748,7 @@
Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
# -u libsys_s pulls in all symbols in libsys
Darwin/*)
- LINKFORSHARED="$extra_undefs -framework CoreFoundation"
+ LINKFORSHARED="$extra_undefs -Wl,-framework,CoreFoundation"
if test "$enable_framework"
then
LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
@@ -13686,7 +13676,7 @@

if test $ac_sys_system = Darwin
then
- LIBS="$LIBS -framework CoreFoundation"
+ LIBS="$LIBS -Wl,-framework,CoreFoundation"
fi

{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for %zd printf() format support" >&5
diff -ru Python-3.2.2.orig/setup.py Python-3.2.2/setup.py
--- Python-3.2.2.orig/setup.py 2011-09-03 12:16:50.000000000 -0400
+++ Python-3.2.2/setup.py 2011-12-29 19:00:45.000000000 -0500
@@ -269,13 +269,17 @@
longest, g))

if missing:
+ num_missing=len(missing)
print()
print("Python build finished, but the necessary bits to build "
"these modules were not found:")
print_three_column(missing)
print("To find the necessary bits, look in setup.py in"
" detect_modules() for the module's name.")
+ print ("(Fink package build should have 2 missing)")
print()
+ if num_missing != 2:
+ sys.exit(1)

if self.failed:
failed = self.failed[:]
@@ -283,6 +287,7 @@
print("Failed to build these modules:")
print_three_column(failed)
print()
+ sys.exit(1)

def build_extension(self, ext):

@@ -396,9 +401,8 @@
# Ensure that /usr/local is always used, but the local build
# directories (i.e. '.' and 'Include') must be first. See issue
# 10520.
- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
- self.add_multiarch_paths()
+ add_dir_to_list(self.compiler.library_dirs, '@PREFIX@/lib')
+ add_dir_to_list(self.compiler.include_dirs, '@PREFIX@/include')

# Add paths specified in the environment variables LDFLAGS and
# CPPFLAGS for header and library files.
@@ -957,12 +959,7 @@
# We hunt for #define SQLITE_VERSION "n.n.n"
# We need to find >= sqlite version 3.0.8
sqlite_incdir = sqlite_libdir = None
- sqlite_inc_paths = [ '/usr/include',
- '/usr/include/sqlite',
- '/usr/include/sqlite3',
- '/usr/local/include',
- '/usr/local/include/sqlite',
- '/usr/local/include/sqlite3',
+ sqlite_inc_paths = [ '@PREFIX@/include'
]
MIN_SQLITE_VERSION_NUMBER = (3, 0, 8)
MIN_SQLITE_VERSION = ".".join([str(x)
@@ -974,7 +971,7 @@
if sys.platform == 'darwin':
sysroot = macosx_sdk_root()

- for d in inc_dirs + sqlite_inc_paths:
+ for d in sqlite_inc_paths:
f = os.path.join(d, "sqlite3.h")

if sys.platform == 'darwin' and is_macosx_sdk_path(d):
@@ -1007,11 +1004,9 @@
sqlite_dirs_to_check = [
os.path.join(sqlite_incdir, '..', 'lib64'),
os.path.join(sqlite_incdir, '..', 'lib'),
- os.path.join(sqlite_incdir, '..', '..', 'lib64'),
- os.path.join(sqlite_incdir, '..', '..', 'lib'),
]
sqlite_libfile = self.compiler.find_library_file(
- sqlite_dirs_to_check + lib_dirs, 'sqlite3')
+ sqlite_dirs_to_check, 'sqlite3')
if sqlite_libfile:
sqlite_libdir = [os.path.abspath(os.path.dirname(sqlite_libfile))]

@@ -1093,7 +1088,7 @@
if self.compiler.find_library_file(lib_dirs,
'gdbm_compat'):
gdbm_libs.append('gdbm_compat')
- if find_file("gdbm/ndbm.h", inc_dirs, []) is not None:
+ if find_file("ndbm.h", inc_dirs, []) is not None:
print("building dbm using gdbm")
dbmext = Extension(
'_dbm', ['_dbmmodule.c'],
@@ -1168,6 +1163,7 @@
panel_library = 'panelw'
curses_libs = [curses_library]
exts.append( Extension('_curses', ['_cursesmodule.c'],
+ include_dirs=["@PREFIX@/include/ncursesw"],
libraries = curses_libs) )
elif curses_library == 'curses' and platform != 'darwin':
# OSX has an old Berkeley curses, not good enough for
@@ -1188,6 +1184,7 @@
if (module_enabled(exts, '_curses') and
self.compiler.find_library_file(lib_dirs, panel_library)):
exts.append( Extension('_curses_panel', ['_curses_panel.c'],
+ include_dirs=["@PREFIX@/include/ncursesw"],
libraries = [panel_library] + curses_libs) )
else:
missing.append('_curses_panel')
@@ -1501,16 +1498,12 @@
# AquaTk is a separate method. Only one Tkinter will be built on
# Darwin - either AquaTk, if it is found, or X11 based Tk.
platform = self.get_platform()
- if (platform == 'darwin' and
- self.detect_tkinter_darwin(inc_dirs, lib_dirs)):
- return

# Assume we haven't found any of the libraries or include files
# The versions with dots are used on Unix, and the versions without
# dots on Windows, for detection by cygwin.
tcllib = tklib = tcl_includes = tk_includes = None
- for version in ['8.6', '86', '8.5', '85', '8.4', '84', '8.3', '83',
- '8.2', '82', '8.1', '81', '8.0', '80']:
+ for version in ['8.4']:
tklib = self.compiler.find_library_file(lib_dirs,
'tk' + version)
tcllib = self.compiler.find_library_file(lib_dirs,
@@ -1735,7 +1728,8 @@
sources=sources,
depends=depends)
ext_test = Extension('_ctypes_test',
- sources=['_ctypes/_ctypes_test.c'])
+ sources=['_ctypes/_ctypes_test.c'],
+ extra_compile_args=['-O0'])
self.extensions.extend([ext, ext_test])

if not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"):

python32 _unstable_ port .patch