summaryrefslogtreecommitdiff
path: root/debian/patches
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2019-12-02 13:09:17 +0300
committerIgor Pashev <pashev.igor@gmail.com>2019-12-02 13:09:17 +0300
commit38fde63f74091af1f6a0d485474769bb6b4f17ce (patch)
tree1317a1fa2ef61c710ff5c653f43c0af8bb164ca6 /debian/patches
downloadpypy-debian.tar.gz
Import pypy (7.2.0+dfsg-1)debian/7.2.0+dfsg-1debian
Diffstat (limited to 'debian/patches')
-rw-r--r--debian/patches/arm64-gcc-bug58
-rw-r--r--debian/patches/ctypes-arm52
-rw-r--r--debian/patches/distutils-install-layout331
-rw-r--r--debian/patches/distutils-link30
-rw-r--r--debian/patches/ensurepip-disabled63
-rw-r--r--debian/patches/ensurepip-wheels145
-rw-r--r--debian/patches/fpic-archs24
-rw-r--r--debian/patches/langpack-gettext46
-rw-r--r--debian/patches/locale-module29
-rw-r--r--debian/patches/multiarch190
-rw-r--r--debian/patches/noise24
-rw-r--r--debian/patches/pep3147-core831
-rw-r--r--debian/patches/pep3147-issue11254340
-rw-r--r--debian/patches/pep3147-stdlib1440
-rw-r--r--debian/patches/plat-gnukfreebsd5027
-rw-r--r--debian/patches/plat-linux2-differences4044
-rw-r--r--debian/patches/platform-lsbrelease55
-rw-r--r--debian/patches/series24
-rw-r--r--debian/patches/skip-hurd-deadlock25
-rw-r--r--debian/patches/skip-test_multiprocessing26
-rw-r--r--debian/patches/test_fsync-eatmydata24
-rw-r--r--debian/patches/test_termios26
-rw-r--r--debian/patches/tkinter-import29
-rw-r--r--debian/patches/version-info49
-rw-r--r--debian/patches/xdg-gvfs-open31
25 files changed, 12963 insertions, 0 deletions
diff --git a/debian/patches/arm64-gcc-bug b/debian/patches/arm64-gcc-bug
new file mode 100644
index 0000000..fca2a30
--- /dev/null
+++ b/debian/patches/arm64-gcc-bug
@@ -0,0 +1,58 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Tue, 22 Oct 2019 11:37:12 -0700
+Subject: Avoid GCC bug in arm64 JIT
+
+Arguably, clarify the logic. The real motivation is a gcc bug, see
+issue #3086
+
+Bug-Upstream: https://bitbucket.org/pypy/pypy/issues/3086/arm64-jit-lots-of-crashes
+Bug-GCC: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92131
+Author: Armin Rigo <arigo@tunes.org>
+Origin: upstream, https://bitbucket.org/pypy/pypy/commits/d81c769a2353
+---
+ rpython/jit/backend/aarch64/opassembler.py | 20 +++++++++-----------
+ 1 file changed, 9 insertions(+), 11 deletions(-)
+
+diff --git a/rpython/jit/backend/aarch64/opassembler.py b/rpython/jit/backend/aarch64/opassembler.py
+index e8607a8..cfd9d58 100644
+--- a/rpython/jit/backend/aarch64/opassembler.py
++++ b/rpython/jit/backend/aarch64/opassembler.py
+@@ -808,9 +808,7 @@ class ResOpAssembler(BaseAssembler):
+ # Inline a series of STR operations, starting at 'dstaddr_loc'.
+ #
+ self.mc.gen_load_int(r.ip0.value, 0)
+- i = 0
+- adjustment = 0
+- needs_adjustment = itemsize < 8 and (startbyte % 8)
++ i = dst_i = 0
+ total_size = size_box.getint()
+ while i < total_size:
+ sz = itemsize
+@@ -818,19 +816,19 @@ class ResOpAssembler(BaseAssembler):
+ next_group += 8
+ if next_group <= total_size:
+ sz = 8
++ if dst_i % 8: # unaligned?
++ self.mc.ADD_ri(dstaddr_loc.value, dstaddr_loc.value, dst_i)
++ dst_i = 0
+ if sz == 8:
+- if needs_adjustment:
+- self.mc.ADD_ri(dstaddr_loc.value, dstaddr_loc.value, i)
+- adjustment = -i
+- needs_adjustment = False
+- self.mc.STR_ri(r.ip0.value, dstaddr_loc.value, i + adjustment)
++ self.mc.STR_ri(r.ip0.value, dstaddr_loc.value, dst_i)
+ elif sz == 4:
+- self.mc.STRW_ri(r.ip0.value, dstaddr_loc.value, i + adjustment)
++ self.mc.STRW_ri(r.ip0.value, dstaddr_loc.value, dst_i)
+ elif sz == 2:
+- self.mc.STRH_ri(r.ip0.value, dstaddr_loc.value, i + adjustment)
++ self.mc.STRH_ri(r.ip0.value, dstaddr_loc.value, dst_i)
+ else:
+- self.mc.STRB_ri(r.ip0.value, dstaddr_loc.value, i + adjustment)
++ self.mc.STRB_ri(r.ip0.value, dstaddr_loc.value, dst_i)
+ i += sz
++ dst_i += sz
+
+ else:
+ if isinstance(size_box, ConstInt):
diff --git a/debian/patches/ctypes-arm b/debian/patches/ctypes-arm
new file mode 100644
index 0000000..2d49d54
--- /dev/null
+++ b/debian/patches/ctypes-arm
@@ -0,0 +1,52 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:57 +0200
+Subject: armhf support
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+Workaround the presentce of hard-float in ldconfig -p output.
+Also, handle the wide variety of ARM unames.
+
+Author: Loïc Minier
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/898172
+Bug-cpython: http://bugs.python.org/issue13508
+Last-Update: 2011-12-19
+---
+ lib-python/2.7/ctypes/util.py | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/lib-python/2.7/ctypes/util.py b/lib-python/2.7/ctypes/util.py
+index 16930e4..eb1c8e1 100644
+--- a/lib-python/2.7/ctypes/util.py
++++ b/lib-python/2.7/ctypes/util.py
+@@ -237,16 +237,27 @@ elif os.name == "posix":
+
+ def _findSoname_ldconfig(name):
+ import struct
++ # XXX this code assumes that we know all unames and that a single
++ # ABI is supported per uname; instead we should find what the
++ # ABI is (e.g. check ABI of current process) or simply ask libc
++ # to load the library for us
++ uname = os.uname()[4]
++ # ARM has a variety of unames, e.g. armv7l
++ if uname.startswith("arm"):
++ uname = "arm"
+ if struct.calcsize('l') == 4:
+- machine = os.uname()[4] + '-32'
++ machine = uname + '-32'
+ else:
+- machine = os.uname()[4] + '-64'
++ machine = uname + '-64'
+ mach_map = {
+ 'x86_64-64': 'libc6,x86-64',
+ 'ppc64-64': 'libc6,64bit',
+ 'sparc64-64': 'libc6,64bit',
+ 's390x-64': 'libc6,64bit',
+ 'ia64-64': 'libc6,IA-64',
++ # this actually breaks on biarch or multiarch as the first
++ # library wins; uname doesn't tell us which ABI we're using
++ 'arm-32': 'libc6(,hard-float)?',
+ }
+ abi_type = mach_map.get(machine, 'libc6')
+
diff --git a/debian/patches/distutils-install-layout b/debian/patches/distutils-install-layout
new file mode 100644
index 0000000..d98ba4f
--- /dev/null
+++ b/debian/patches/distutils-install-layout
@@ -0,0 +1,331 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: distutils: Add an option --install-layout=deb
+
+This option:
+ - installs into $prefix/dist-packages instead of $prefix/site-packages.
+ - doesn't encode the python version into the egg name.
+
+Based on cpython Debian packaging
+
+Author: Matthias Klose <doko@debian.org>
+Author: Stefano Rivera <stefanor@debian.org>
+Last-Update: 2013-02-23
+---
+ lib-python/2.7/distutils/command/install.py | 44 +++++++++++++++++++++-
+ .../2.7/distutils/command/install_egg_info.py | 30 ++++++++++++---
+ lib-python/2.7/distutils/sysconfig_pypy.py | 6 ++-
+ lib-python/2.7/pydoc.py | 1 +
+ lib-python/2.7/site.py | 18 ++++++++-
+ lib-python/2.7/sysconfig.py | 29 +++++++++++++-
+ lib-python/2.7/test/test_site.py | 2 +-
+ lib-python/2.7/test/test_sysconfig.py | 3 +-
+ 8 files changed, 119 insertions(+), 14 deletions(-)
+
+diff --git a/lib-python/2.7/distutils/command/install.py b/lib-python/2.7/distutils/command/install.py
+index fc43951..76fdd75 100644
+--- a/lib-python/2.7/distutils/command/install.py
++++ b/lib-python/2.7/distutils/command/install.py
+@@ -90,6 +90,20 @@ INSTALL_SCHEMES = {
+ 'scripts': '$base/bin',
+ 'data' : '$base',
+ },
++ 'pypy-deb': {
++ 'purelib': '$base/dist-packages',
++ 'platlib': '$base/dist-packages',
++ 'headers': '$base/include',
++ 'scripts': '$base/bin',
++ 'data' : '$base',
++ },
++ 'pypy-local': {
++ 'purelib': '$base/../../local/lib/pypy$py_version_short/dist-packages',
++ 'platlib': '$base/../../local/lib/pypy$py_version_short/dist-packages',
++ 'headers': '$base/../../local/include',
++ 'scripts': '$base/../../local/bin',
++ 'data' : '$base/../../local',
++ },
+ }
+
+ # The keys to an installation scheme; if any new types of files are to be
+@@ -161,6 +175,9 @@ class install (Command):
+
+ ('record=', None,
+ "filename in which to record list of installed files"),
++
++ ('install-layout=', None,
++ "installation layout to choose (known values: deb, unix)"),
+ ]
+
+ boolean_options = ['compile', 'force', 'skip-build', 'user']
+@@ -175,6 +192,7 @@ class install (Command):
+ self.exec_prefix = None
+ self.home = None
+ self.user = 0
++ self.prefix_option = None
+
+ # These select only the installation base; it's up to the user to
+ # specify the installation scheme (currently, that means supplying
+@@ -196,6 +214,9 @@ class install (Command):
+ self.install_userbase = USER_BASE
+ self.install_usersite = USER_SITE
+
++ # enable custom installation, known values: deb
++ self.install_layout = None
++
+ self.compile = None
+ self.optimize = None
+
+@@ -428,6 +449,7 @@ class install (Command):
+ self.install_base = self.install_platbase = self.home
+ self.select_scheme("unix_home")
+ else:
++ self.prefix_option = self.prefix
+ if self.prefix is None:
+ if self.exec_prefix is not None:
+ raise DistutilsOptionError, \
+@@ -442,7 +464,25 @@ class install (Command):
+
+ self.install_base = self.prefix
+ self.install_platbase = self.exec_prefix
+- self.select_scheme("unix_prefix")
++ if self.install_layout:
++ if self.install_layout.lower() in ['deb']:
++ self.select_scheme("pypy-deb")
++ elif self.install_layout.lower() in ['posix', 'unix']:
++ self.select_scheme("unix_prefix")
++ else:
++ raise DistutilsOptionError(
++ "unknown value for --install-layout")
++ elif ((self.prefix_option
++ and not os.path.normpath(self.prefix).startswith(
++ '/usr/local/'))
++ or 'PYTHONUSERBASE' in os.environ
++ or 'real_prefix' in sys.__dict__):
++ self.select_scheme("unix_prefix")
++ else:
++ if os.path.normpath(self.prefix).startswith('/usr/local/'):
++ self.select_scheme("pypy-deb")
++ else:
++ self.select_scheme("pypy-local")
+
+ # finalize_unix ()
+
+@@ -475,7 +515,7 @@ class install (Command):
+ def select_scheme (self, name):
+ # it's the caller's problem if they supply a bad name!
+ if (hasattr(sys, 'pypy_version_info') and
+- not name.endswith(('_user', '_home'))):
++ not (name.endswith(('_user', '_home')) or name.startswith('pypy'))):
+ name = 'pypy'
+ scheme = INSTALL_SCHEMES[name]
+ for key in SCHEME_KEYS:
+diff --git a/lib-python/2.7/distutils/command/install_egg_info.py b/lib-python/2.7/distutils/command/install_egg_info.py
+index c888031..88b5d94 100644
+--- a/lib-python/2.7/distutils/command/install_egg_info.py
++++ b/lib-python/2.7/distutils/command/install_egg_info.py
+@@ -14,18 +14,38 @@ class install_egg_info(Command):
+ description = "Install package's PKG-INFO metadata as an .egg-info file"
+ user_options = [
+ ('install-dir=', 'd', "directory to install to"),
++ ('install-layout', None, "custom installation layout"),
+ ]
+
+ def initialize_options(self):
+ self.install_dir = None
++ self.install_layout = None
++ self.prefix_option = None
+
+ def finalize_options(self):
+ self.set_undefined_options('install_lib',('install_dir','install_dir'))
+- basename = "%s-%s-py%s.egg-info" % (
+- to_filename(safe_name(self.distribution.get_name())),
+- to_filename(safe_version(self.distribution.get_version())),
+- sys.version[:3]
+- )
++ self.set_undefined_options('install',('install_layout','install_layout'))
++ self.set_undefined_options('install',('prefix_option','prefix_option'))
++ if self.install_layout:
++ if not self.install_layout.lower() in ['deb', 'unix']:
++ raise DistutilsOptionError(
++ "unknown value for --install-layout")
++ no_pyver = (self.install_layout.lower() == 'deb')
++ elif self.prefix_option:
++ no_pyver = False
++ else:
++ no_pyver = True
++ if no_pyver:
++ basename = "%s-%s.egg-info" % (
++ to_filename(safe_name(self.distribution.get_name())),
++ to_filename(safe_version(self.distribution.get_version()))
++ )
++ else:
++ basename = "%s-%s-py%s.egg-info" % (
++ to_filename(safe_name(self.distribution.get_name())),
++ to_filename(safe_version(self.distribution.get_version())),
++ sys.version[:3]
++ )
+ self.target = os.path.join(self.install_dir, basename)
+ self.outputs = [self.target]
+
+diff --git a/lib-python/2.7/distutils/sysconfig_pypy.py b/lib-python/2.7/distutils/sysconfig_pypy.py
+index 9b0d941..d6f4bdb 100644
+--- a/lib-python/2.7/distutils/sysconfig_pypy.py
++++ b/lib-python/2.7/distutils/sysconfig_pypy.py
+@@ -49,11 +49,15 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+ If 'prefix' is supplied, use it instead of sys.prefix or
+ sys.exec_prefix -- i.e., ignore 'plat_specific'.
+ """
++ is_default_prefix = not prefix or os.path.normpath(prefix).startswith(('/usr/lib/pypy'))
+ if prefix is None:
+ prefix = PREFIX
+ if standard_lib:
+ return os.path.join(prefix, "lib-python", get_python_version())
+- return os.path.join(prefix, 'site-packages')
++ if is_default_prefix and 'PYTHONUSERBASE' not in os.environ and 'real_prefix' not in sys.__dict__:
++ return os.path.join(prefix, 'dist-packages')
++ else:
++ return os.path.join(prefix, 'site-packages')
+
+
+ _config_vars = None
+diff --git a/lib-python/2.7/pydoc.py b/lib-python/2.7/pydoc.py
+index 14ff9bb..985f285 100755
+--- a/lib-python/2.7/pydoc.py
++++ b/lib-python/2.7/pydoc.py
+@@ -393,6 +393,7 @@ class Doc:
+ 'marshal', 'posix', 'signal', 'sys',
+ 'thread', 'zipimport') or
+ (file.startswith(basedir) and
++ not file.startswith(os.path.join(basedir, 'dist-packages')) and
+ not file.startswith(os.path.join(basedir, 'site-packages')))) and
+ object.__name__ not in ('xml.etree', 'test.pydoc_mod')):
+ if docloc.startswith(("http://", "https://")):
+diff --git a/lib-python/2.7/site.py b/lib-python/2.7/site.py
+index 37de98e..7cfa6be 100644
+--- a/lib-python/2.7/site.py
++++ b/lib-python/2.7/site.py
+@@ -12,13 +12,18 @@ works).
+
+ This will append site-specific paths to the module search path. On
+ Unix (including Mac OSX), it starts with sys.prefix and
+-sys.exec_prefix (if different) and appends
+-lib/python<version>/site-packages as well as lib/site-python.
++sys.exec_prefix (if different) and appends dist-packages.
+ On other platforms (such as Windows), it tries each of the
+ prefixes directly, as well as with lib/site-packages appended. The
+ resulting directories, if they exist, are appended to sys.path, and
+ also inspected for path configuration files.
+
++For Debian and derivatives, this sys.path is augmented with directories
++for packages distributed within the distribution. Local addons go
++into /usr/local/lib/pypy<version>/dist-packages, Debian addons
++install into /usr/{lib,share}/pypy<version>/dist-packages.
++/usr/lib/pypy<version>/site-packages is not used.
++
+ A path configuration file is a file whose name has the form
+ <package>.pth; its contents are additional directories (one per line)
+ to be added to sys.path. Non-existing directories (or
+@@ -277,6 +282,13 @@ def addusersitepackages(known_paths):
+
+ if ENABLE_USER_SITE and os.path.isdir(user_site):
+ addsitedir(user_site, known_paths)
++ if ENABLE_USER_SITE:
++ for dist_libdir in ("local/lib", "lib"):
++ user_site = os.path.join(USER_BASE, dist_libdir,
++ "pypy" + sys.version[:3],
++ "dist-packages")
++ if os.path.isdir(user_site):
++ addsitedir(user_site, known_paths)
+ return known_paths
+
+ def getsitepackages():
+@@ -301,6 +313,8 @@ def getsitepackages():
+ elif is_pypy:
+ from distutils.sysconfig import get_python_lib
+ sitedir = get_python_lib(standard_lib=False, prefix=prefix)
++ sitepackages.append(sitedir.replace('lib/pypy', 'local/lib/'
++ 'pypy' + sys.version[:3]))
+ sitepackages.append(sitedir)
+ elif os.sep == '/':
+ sitepackages.append(os.path.join(prefix, "lib",
+diff --git a/lib-python/2.7/sysconfig.py b/lib-python/2.7/sysconfig.py
+index 22af6e8..9be6a5b 100644
+--- a/lib-python/2.7/sysconfig.py
++++ b/lib-python/2.7/sysconfig.py
+@@ -36,6 +36,26 @@ _INSTALL_SCHEMES = {
+ 'scripts': '{base}/bin',
+ 'data' : '{base}',
+ },
++ 'pypy-deb': {
++ 'stdlib': '{base}/lib-python',
++ 'platstdlib': '{base}/lib-python',
++ 'purelib': '{base}/lib-python',
++ 'platlib': '{base}/lib-python',
++ 'include': '{base}/include',
++ 'platinclude': '{base}/include',
++ 'scripts': '{base}/bin',
++ 'data' : '{base}',
++ },
++ 'pypy-local': {
++ 'stdlib': '{base}/../../local/lib/pypy{py_version_short}/lib-python',
++ 'platstdlib': '{base}/../../local/lib/pypy{py_version_short}/lib-python',
++ 'purelib': '{base}/../../local/lib/pypy{py_version_short}/lib-python',
++ 'platlib': '{base}/../../local/lib/pypy{py_version_short}/lib-python',
++ 'include': '{base}/../../local/include',
++ 'platinclude': '{base}/../../local/include',
++ 'scripts': '{base}/../../local/bin',
++ 'data' : '{base}/../../local',
++ },
+ 'nt': {
+ 'stdlib': '{base}/Lib',
+ 'platstdlib': '{base}/Lib',
+@@ -178,7 +198,11 @@ def _expand_vars(scheme, vars):
+
+ def _get_default_scheme():
+ if '__pypy__' in sys.builtin_module_names:
+- return 'pypy'
++ # the default scheme for posix on Debian/Ubuntu is pypy-local
++ # FIXME: return dist-packages/posix_prefix only for
++ # is_default_prefix and 'PYTHONUSERBASE' not in os.environ and 'real_prefix' not in sys.__dict__
++ # is_default_prefix = not prefix or os.path.normpath(prefix) in ('/usr', '/usr/local')
++ return 'pypy-local'
+ elif os.name == 'posix':
+ # the default scheme for posix is posix_prefix
+ return 'posix_prefix'
+@@ -425,7 +449,8 @@ def get_config_h_filename():
+ else:
+ inc_dir = _PROJECT_BASE
+ else:
+- inc_dir = get_path('platinclude')
++ inc_dir = get_path('platinclude', 'pypy-deb').replace("/../../local/",
++ "/", 1)
+ return os.path.join(inc_dir, 'pyconfig.h')
+
+ def get_scheme_names():
+diff --git a/lib-python/2.7/test/test_site.py b/lib-python/2.7/test/test_site.py
+index 02331be..8a34204 100644
+--- a/lib-python/2.7/test/test_site.py
++++ b/lib-python/2.7/test/test_site.py
+@@ -234,7 +234,7 @@ class HelperFunctionsTests(unittest.TestCase):
+ wanted = os.path.join('xoxo', 'Lib', 'site-packages')
+ self.assertEqual(dirs[0], wanted)
+ elif '__pypy__' in sys.builtin_module_names:
+- self.assertEquals(len(dirs), 1)
++ self.assertEquals(len(dirs), 2)
+ wanted = os.path.join('xoxo', 'site-packages')
+ self.assertEquals(dirs[0], wanted)
+ elif os.sep == '/':
+diff --git a/lib-python/2.7/test/test_sysconfig.py b/lib-python/2.7/test/test_sysconfig.py
+index 95d3a3c..a874d8d 100644
+--- a/lib-python/2.7/test/test_sysconfig.py
++++ b/lib-python/2.7/test/test_sysconfig.py
+@@ -253,7 +253,8 @@ class TestSysConfig(unittest.TestCase):
+
+ def test_get_scheme_names(self):
+ wanted = ('nt', 'nt_user', 'os2', 'os2_home', 'osx_framework_user',
+- 'posix_home', 'posix_prefix', 'posix_user', 'pypy')
++ 'posix_home', 'posix_prefix', 'posix_user', 'pypy',
++ 'pypy-deb', 'pypy-local')
+ self.assertEqual(get_scheme_names(), wanted)
+
+ @unittest.skipIf(check_impl_detail(pypy=True),
diff --git a/debian/patches/distutils-link b/debian/patches/distutils-link
new file mode 100644
index 0000000..1fd6066
--- /dev/null
+++ b/debian/patches/distutils-link
@@ -0,0 +1,30 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: Don't add standard library dirs to library_dirs and
+ runtime_library_dirs.
+
+Origin: Debian cpython packaging
+Author: Matthias Klose <doko@debian.org>
+Last-Update: 2011-12-19
+---
+ lib-python/2.7/distutils/unixccompiler.py | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/lib-python/2.7/distutils/unixccompiler.py b/lib-python/2.7/distutils/unixccompiler.py
+index 250ff12..bf55820 100644
+--- a/lib-python/2.7/distutils/unixccompiler.py
++++ b/lib-python/2.7/distutils/unixccompiler.py
+@@ -172,7 +172,12 @@ class UnixCCompiler(CCompiler):
+ objects, output_dir = self._fix_object_args(objects, output_dir)
+ libraries, library_dirs, runtime_library_dirs = \
+ self._fix_lib_args(libraries, library_dirs, runtime_library_dirs)
+-
++ # filter out standard library paths, which are not explicitely needed
++ # for linking
++ library_dirs = [dir for dir in library_dirs
++ if not dir in ('/lib', '/lib64', '/usr/lib', '/usr/lib64')]
++ runtime_library_dirs = [dir for dir in runtime_library_dirs
++ if not dir in ('/lib', '/lib64', '/usr/lib', '/usr/lib64')]
+ lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs,
+ libraries)
+ if type(output_dir) not in (StringType, NoneType):
diff --git a/debian/patches/ensurepip-disabled b/debian/patches/ensurepip-disabled
new file mode 100644
index 0000000..a1563a3
--- /dev/null
+++ b/debian/patches/ensurepip-disabled
@@ -0,0 +1,63 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: Disable ensurepip in Debian for now
+
+Origin: Debian cpython packaging
+Last-Update: 2015-03-26
+---
+ lib-python/2.7/ensurepip/__init__.py | 17 +++++++++++++++++
+ lib-python/2.7/test/test_ensurepip.py | 1 +
+ 2 files changed, 18 insertions(+)
+
+diff --git a/lib-python/2.7/ensurepip/__init__.py b/lib-python/2.7/ensurepip/__init__.py
+index f1cdbd1..896feee 100644
+--- a/lib-python/2.7/ensurepip/__init__.py
++++ b/lib-python/2.7/ensurepip/__init__.py
+@@ -12,6 +12,21 @@ import tempfile
+
+ __all__ = ["version", "bootstrap"]
+
++def _ensurepip_is_disabled_in_debian():
++ if True:
++ print ('''\
++ensurepip is disabled in Debian/Ubuntu for the system python.
++
++Python modules For the system python are usually handled by dpkg and apt-get.
++
++ apt-get install pypy-<module name>
++
++Install the python-pip package to use pip itself. Using pip together
++with the system python might have unexpected results for any system installed
++module, so use it on your own risk, or make sure to only use it in virtual
++environments.
++''')
++ sys.exit(1)
+
+ _PROJECTS = [
+ "setuptools",
+@@ -33,6 +48,7 @@ def version():
+ """
+ Returns a string specifying the bundled version of pip.
+ """
++ _ensurepip_is_disabled_in_debian()
+ whl_name = 'pip'
+ wheel_names = glob.glob('/usr/share/python-wheels/%s-*.whl' % whl_name)
+ if len(wheel_names) == 1:
+@@ -61,6 +77,7 @@ def bootstrap(root=None, upgrade=False, user=False,
+
+ Note that calling this function will alter both sys.path and os.environ.
+ """
++ _ensurepip_is_disabled_in_debian()
+ if altinstall and default_pip:
+ raise ValueError("Cannot use altinstall and default_pip together")
+
+diff --git a/lib-python/2.7/test/test_ensurepip.py b/lib-python/2.7/test/test_ensurepip.py
+index 3316fcf..e5f972d 100644
+--- a/lib-python/2.7/test/test_ensurepip.py
++++ b/lib-python/2.7/test/test_ensurepip.py
+@@ -1,4 +1,5 @@
+ import unittest
++raise unittest.SkipTest('ensurepip is disabled in debian')
+ import os
+ import os.path
+ import contextlib
diff --git a/debian/patches/ensurepip-wheels b/debian/patches/ensurepip-wheels
new file mode 100644
index 0000000..4533f33
--- /dev/null
+++ b/debian/patches/ensurepip-wheels
@@ -0,0 +1,145 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: Let ensurepip use the system wheels
+
+Not the ones from the python source.
+
+Origin: Debian cpython packaging
+Last-Update: 2015-03-26
+---
+ lib-python/2.7/ensurepip/__init__.py | 74 ++++++++++++++++++++++++++----------
+ 1 file changed, 54 insertions(+), 20 deletions(-)
+
+diff --git a/lib-python/2.7/ensurepip/__init__.py b/lib-python/2.7/ensurepip/__init__.py
+index c2abed8..f1cdbd1 100644
+--- a/lib-python/2.7/ensurepip/__init__.py
++++ b/lib-python/2.7/ensurepip/__init__.py
+@@ -1,6 +1,7 @@
+ #!/usr/bin/env python2
+ from __future__ import print_function
+
++import glob
+ import os
+ import os.path
+ import pkgutil
+@@ -12,13 +13,9 @@ import tempfile
+ __all__ = ["version", "bootstrap"]
+
+
+-_SETUPTOOLS_VERSION = "28.8.0"
+-
+-_PIP_VERSION = "9.0.1"
+-
+ _PROJECTS = [
+- ("setuptools", _SETUPTOOLS_VERSION),
+- ("pip", _PIP_VERSION),
++ "setuptools",
++ "pip",
+ ]
+
+
+@@ -36,7 +33,11 @@ def version():
+ """
+ Returns a string specifying the bundled version of pip.
+ """
+- return _PIP_VERSION
++ whl_name = 'pip'
++ wheel_names = glob.glob('/usr/share/python-wheels/%s-*.whl' % whl_name)
++ if len(wheel_names) == 1:
++ return os.path.basename(wheel_names[0]).split('-')[1]
++ raise RuntimeError('missing dependency wheel %s. Installation of the python-%s-whl package is needed to use ensurepip.' % (whl_name, whl_name))
+
+
+ def _disable_pip_configuration_settings():
+@@ -78,21 +79,53 @@ def bootstrap(root=None, upgrade=False, user=False,
+ # omit pip and easy_install
+ os.environ["ENSUREPIP_OPTIONS"] = "install"
+
++ # Debian: The bundled wheels are useless to us because we must use ones
++ # crafted from source code in the archive. As we build the virtual
++ # environment, copy the wheels from the system location into the virtual
++ # environment, and place those wheels on sys.path.
++ def copy_wheels(wheels, destdir, paths):
++ for project in wheels:
++ wheel_names = glob.glob(
++ '/usr/share/python-wheels/{}-*.whl'.format(project))
++ if len(wheel_names) == 0:
++ raise RuntimeError('missing dependency wheel %s. Installation of the python-%s-whl package is needed to use ensurepip.' % (project, project))
++ assert len(wheel_names) == 1, wheel_names
++ wheel_name = os.path.basename(wheel_names[0])
++ path = os.path.join('/usr/share/python-wheels', wheel_name)
++ with open(path, 'rb') as fp:
++ whl = fp.read()
++ dest = os.path.join(destdir, wheel_name)
++ with open(dest, 'wb') as fp:
++ fp.write(whl)
++ paths.append(dest)
++
++ # check that the python-{pip,setuptools}-whl packages are installed
++ missing = []
++ for project in reversed(_PROJECTS):
++ wheel_names = glob.glob('/usr/share/python-wheels/%s-*.whl' % project)
++ if len(wheel_names) != 1:
++ missing.append(project)
++ if missing:
++ raise RuntimeError('missing wheel(s) %s. Installation of the %s package(s) is needed to use ensurepip.' \
++ % (', '.join([missing]),
++ ', '.join(['python-%s-whl' % m for m in missing])) \
++ )
++
+ tmpdir = tempfile.mkdtemp()
++
++ for project in _PROJECTS:
++ try:
++ with open('/usr/share/python-wheels/%s.dependencies' % project) as fp:
++ dependencies = [line[:-1].split()[0] for line in fp.readlines()]
++ except IOError:
++ dependencies = []
++ copy_wheels(dependencies, tmpdir, sys.path)
++
+ try:
+ # Put our bundled wheels into a temporary directory and construct the
+ # additional paths that need added to sys.path
+ additional_paths = []
+- for project, version in _PROJECTS:
+- wheel_name = "{}-{}-py2.py3-none-any.whl".format(project, version)
+- whl = pkgutil.get_data(
+- "ensurepip",
+- "_bundled/{}".format(wheel_name),
+- )
+- with open(os.path.join(tmpdir, wheel_name), "wb") as fp:
+- fp.write(whl)
+-
+- additional_paths.append(os.path.join(tmpdir, wheel_name))
++ copy_wheels(_PROJECTS, tmpdir, additional_paths)
+
+ # Construct the arguments to be passed to the pip command
+ args = ["install", "--no-index", "--find-links", tmpdir]
+@@ -105,7 +138,7 @@ def bootstrap(root=None, upgrade=False, user=False,
+ if verbosity:
+ args += ["-" + "v" * verbosity]
+
+- _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
++ _run_pip(args + _PROJECTS, additional_paths)
+ finally:
+ shutil.rmtree(tmpdir, ignore_errors=True)
+
+@@ -122,7 +155,8 @@ def _uninstall_helper(verbosity=0):
+ return
+
+ # If the pip version doesn't match the bundled one, leave it alone
+- if pip.__version__ != _PIP_VERSION:
++ # Disabled for Debian, always using the version from the python3-pip package.
++ if False and pip.__version__ != _PIP_VERSION:
+ msg = ("ensurepip will only uninstall a matching version "
+ "({!r} installed, {!r} bundled)")
+ print(msg.format(pip.__version__, _PIP_VERSION), file=sys.stderr)
+@@ -135,7 +169,7 @@ def _uninstall_helper(verbosity=0):
+ if verbosity:
+ args += ["-" + "v" * verbosity]
+
+- _run_pip(args + [p[0] for p in reversed(_PROJECTS)])
++ _run_pip(args + reversed(_PROJECTS))
+
+
+ def _main(argv=None):
diff --git a/debian/patches/fpic-archs b/debian/patches/fpic-archs
new file mode 100644
index 0000000..0acf102
--- /dev/null
+++ b/debian/patches/fpic-archs
@@ -0,0 +1,24 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:57 +0200
+Subject: x32 requires -fPIC
+
+x32 detection is currently Debian-specific.
+---
+ rpython/translator/platform/__init__.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/rpython/translator/platform/__init__.py b/rpython/translator/platform/__init__.py
+index 1833a95..4f6879e 100644
+--- a/rpython/translator/platform/__init__.py
++++ b/rpython/translator/platform/__init__.py
+@@ -265,7 +265,9 @@ if sys.platform.startswith('linux'):
+ # detect armhf without shelling out
+ if (platform.architecture()[0] == '64bit'
+ or platform.machine().startswith(
+- ('arm', 'm68k', 'mips', 'parisc', 'ppc', 'sh4'))):
++ ('arm', 'm68k', 'mips', 'parisc', 'ppc', 'sh4'))
++ or getattr(getattr(sys, 'implementation', sys), '_multiarch',
++ None) == 'x86_64-linux-gnux32'):
+ host_factory = LinuxPIC
+ else:
+ host_factory = Linux
diff --git a/debian/patches/langpack-gettext b/debian/patches/langpack-gettext
new file mode 100644
index 0000000..cd230fe
--- /dev/null
+++ b/debian/patches/langpack-gettext
@@ -0,0 +1,46 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: Support Ubuntu langpacks
+
+Support alternative gettext tree in /usr/share/locale-langpack; if a
+file is present in both trees, prefer the newer one
+
+Forwarded: not-needed
+Origin: Debian cpython packaging
+Author: Michael Vogt <michael.vogt@ubuntu.com>
+Last-Update: 2011-12-19
+---
+ lib-python/2.7/gettext.py | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+diff --git a/lib-python/2.7/gettext.py b/lib-python/2.7/gettext.py
+index 765cc8c..b210f8d 100644
+--- a/lib-python/2.7/gettext.py
++++ b/lib-python/2.7/gettext.py
+@@ -522,11 +522,26 @@ def find(domain, localedir=None, languages=None, all=0):
+ if lang == 'C':
+ break
+ mofile = os.path.join(localedir, lang, 'LC_MESSAGES', '%s.mo' % domain)
++ mofile_lp = os.path.join("/usr/share/locale-langpack", lang,
++ 'LC_MESSAGES', '%s.mo' % domain)
++
++ # first look into the standard locale dir, then into the
++ # langpack locale dir
++
++ # standard mo file
+ if os.path.exists(mofile):
+ if all:
+ result.append(mofile)
+ else:
+ return mofile
++
++ # langpack mofile -> use it
++ if os.path.exists(mofile_lp):
++ if all:
++ result.append(mofile_lp)
++ else:
++ return mofile_lp
++
+ return result
+
+
diff --git a/debian/patches/locale-module b/debian/patches/locale-module
new file mode 100644
index 0000000..539598f
--- /dev/null
+++ b/debian/patches/locale-module
@@ -0,0 +1,29 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: Don't map 'utf8', 'utf-8' to 'utf'
+
+'utf' is not a known encoding for glibc.
+
+Author: Matthias Klose <doko@debian.org>
+Origin: Debian cpython packaging
+Bug-cpython: http://bugs.python.org/issue1166957
+Last-Update: 2011-12-19
+---
+ lib-python/2.7/locale.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib-python/2.7/locale.py b/lib-python/2.7/locale.py
+index 5aab163..9527d95 100644
+--- a/lib-python/2.7/locale.py
++++ b/lib-python/2.7/locale.py
+@@ -1701,8 +1701,8 @@ locale_alias = {
+ 'uk_ua.iso88595': 'uk_UA.ISO8859-5',
+ 'uk_ua.koi8u': 'uk_UA.KOI8-U',
+ 'uk_ua.microsoftcp1251': 'uk_UA.CP1251',
+- 'univ': 'en_US.utf',
+- 'universal': 'en_US.utf',
++ 'univ': 'en_US.UTF-8',
++ 'universal': 'en_US.UTF-8',
+ 'universal.utf8@ucs4': 'en_US.UTF-8',
+ 'unm_us': 'unm_US.UTF-8',
+ 'ur': 'ur_PK.CP1256',
diff --git a/debian/patches/multiarch b/debian/patches/multiarch
new file mode 100644
index 0000000..e459566
--- /dev/null
+++ b/debian/patches/multiarch
@@ -0,0 +1,190 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: Add multiarch tag to C extension file names
+
+Add _multiarch variable to sys, and MULTIARCH to sysconfig variables,
+exposing the multiarch tag.
+
+Add the multiarch tag to C extension file names, by default, while still
+supporting bare suffixes.
+
+Based on multiarch.diff in Debian cPython.
+
+Forwarded: not-needed
+Last-Modified: 2014-09-20
+---
+ lib-python/2.7/sysconfig.py | 3 +++
+ lib-python/2.7/test/test_sysconfig.py | 5 +++++
+ lib_pypy/_sysconfigdata.py | 5 +++++
+ pypy/module/imp/importing.py | 5 ++++-
+ pypy/module/imp/interp_imp.py | 8 ++++++--
+ pypy/module/imp/test/test_import.py | 3 ++-
+ pypy/module/sys/debian.py | 12 ++++++++++++
+ pypy/module/sys/moduledef.py | 4 ++++
+ pypy/module/sys/test/test_sysmodule.py | 5 +++++
+ 9 files changed, 46 insertions(+), 4 deletions(-)
+ create mode 100644 pypy/module/sys/debian.py
+
+diff --git a/lib-python/2.7/sysconfig.py b/lib-python/2.7/sysconfig.py
+index 9621a49..22af6e8 100644
+--- a/lib-python/2.7/sysconfig.py
++++ b/lib-python/2.7/sysconfig.py
+@@ -526,6 +526,9 @@ def get_config_vars(*args):
+ import imp
+ for suffix, mode, type_ in imp.get_suffixes():
+ if type_ == imp.C_EXTENSION:
++ multiarch = _CONFIG_VARS.get('MULTIARCH')
++ if multiarch and multiarch in suffix:
++ continue
+ _CONFIG_VARS['SOABI'] = suffix.split('.')[1]
+ break
+ _CONFIG_VARS['INCLUDEPY'] = os.path.join(_CONFIG_VARS['prefix'],
+diff --git a/lib-python/2.7/test/test_sysconfig.py b/lib-python/2.7/test/test_sysconfig.py
+index 69d660b..95d3a3c 100644
+--- a/lib-python/2.7/test/test_sysconfig.py
++++ b/lib-python/2.7/test/test_sysconfig.py
+@@ -344,6 +344,11 @@ class TestSysConfig(unittest.TestCase):
+ self.assertEqual(status, 0)
+ self.assertEqual(my_platform, test_platform)
+
++ def test_multiarch_config_var(self):
++ multiarch = get_config_var('MULTIARCH')
++ self.assertIsInstance(multiarch, str)
++
++
+ def test_main():
+ run_unittest(TestSysConfig)
+
+diff --git a/lib_pypy/_sysconfigdata.py b/lib_pypy/_sysconfigdata.py
+index dda3edd..8b20ea8 100644
+--- a/lib_pypy/_sysconfigdata.py
++++ b/lib_pypy/_sysconfigdata.py
+@@ -1,5 +1,10 @@
+ import imp
++import sys
+
+ build_time_vars = {
+ "SO": [s[0] for s in imp.get_suffixes() if s[2] == imp.C_EXTENSION][0]
+ }
++if hasattr(sys, '_multiarch'):
++ build_time_vars.update({
++ 'MULTIARCH': sys._multiarch,
++ })
+diff --git a/pypy/module/imp/importing.py b/pypy/module/imp/importing.py
+index 12635cb..55fb2b6 100644
+--- a/pypy/module/imp/importing.py
++++ b/pypy/module/imp/importing.py
+@@ -43,7 +43,7 @@ DEFAULT_SOABI = 'pypy-41'
+ DEFAULT_MAGIC_TAG = DEFAULT_SOABI
+
+ @specialize.memo()
+-def get_so_extension(space):
++def get_so_extension(space, multiarch=True):
+ if space.config.objspace.soabi is not None:
+ soabi = space.config.objspace.soabi
+ else:
+@@ -55,6 +55,9 @@ def get_so_extension(space):
+ if not space.config.translating:
+ soabi += 'i'
+
++ if multiarch and hasattr(sys, '_multiarch'):
++ soabi += '-' + sys._multiarch
++
+ return '.' + soabi + SO
+
+ def log_pyverbose(space, level, message):
+diff --git a/pypy/module/imp/interp_imp.py b/pypy/module/imp/interp_imp.py
+index 7d133f5..21b9f3d 100644
+--- a/pypy/module/imp/interp_imp.py
++++ b/pypy/module/imp/interp_imp.py
+@@ -11,10 +11,14 @@ from pypy.interpreter.streamutil import wrap_streamerror
+ def get_suffixes(space):
+ suffixes_w = []
+ if importing.has_so_extension(space):
+- suffixes_w.append(
++ suffixes_w.extend([
+ space.newtuple([space.newtext(importing.get_so_extension(space)),
+ space.newtext('rb'),
+- space.newint(importing.C_EXTENSION)]))
++ space.newint(importing.C_EXTENSION)]),
++ space.newtuple([space.newtext(importing.get_so_extension(space, False)),
++ space.newtext('rb'),
++ space.newint(importing.C_EXTENSION)]),
++ ])
+ suffixes_w.extend([
+ space.newtuple([space.newtext('.py'),
+ space.newtext('U'),
+diff --git a/pypy/module/imp/test/test_import.py b/pypy/module/imp/test/test_import.py
+index e5851ea..ba85776 100644
+--- a/pypy/module/imp/test/test_import.py
++++ b/pypy/module/imp/test/test_import.py
+@@ -850,11 +850,12 @@ class TestAbi:
+ def test_abi_tag(self):
+ space1 = maketestobjspace(make_config(None, soabi='TEST'))
+ space2 = maketestobjspace(make_config(None, soabi=''))
++ ma = sys._multiarch
+ if sys.platform == 'win32':
+ assert importing.get_so_extension(space1) == '.TESTi.pyd'
+ assert importing.get_so_extension(space2) == '.pyd'
+ else:
+- assert importing.get_so_extension(space1) == '.TESTi.so'
++ assert importing.get_so_extension(space1) == '.TESTi-%s.so' % ma
+ assert importing.get_so_extension(space2) == '.so'
+
+ def _getlong(data):
+diff --git a/pypy/module/sys/debian.py b/pypy/module/sys/debian.py
+new file mode 100644
+index 0000000..6c5fbdb
+--- /dev/null
++++ b/pypy/module/sys/debian.py
+@@ -0,0 +1,12 @@
++import os
++import sys
++
++_multiarch = getattr(getattr(sys, 'implementation', sys), '_multiarch', None)
++# Support building under the Debian buildsystem, on older releases
++if not _multiarch:
++ _multiarch = os.environ['DEB_HOST_MULTIARCH']
++del os, sys
++
++
++def get_multiarch_tuple(space):
++ return space.wrap(_multiarch)
+diff --git a/pypy/module/sys/moduledef.py b/pypy/module/sys/moduledef.py
+index 5a7d4bd..32944d6 100644
+--- a/pypy/module/sys/moduledef.py
++++ b/pypy/module/sys/moduledef.py
+@@ -2,6 +2,7 @@ from pypy.interpreter.mixedmodule import MixedModule
+ from pypy.interpreter.error import OperationError
+ from rpython.rlib.objectmodel import we_are_translated
+ from rpython.rlib import rdynload
++import os
+ import sys
+
+ _WIN = sys.platform == 'win32'
+@@ -100,6 +101,9 @@ class Module(MixedModule):
+ interpleveldefs['getdlopenflags'] = 'system.getdlopenflags'
+ interpleveldefs['setdlopenflags'] = 'system.setdlopenflags'
+
++ if hasattr(sys, '_multiarch') or os.environ.get('DEB_HOST_MULTIARCH'):
++ interpleveldefs['_multiarch'] = 'debian.get_multiarch_tuple(space)'
++
+ appleveldefs = {
+ 'excepthook' : 'app.excepthook',
+ '__excepthook__' : 'app.excepthook',
+diff --git a/pypy/module/sys/test/test_sysmodule.py b/pypy/module/sys/test/test_sysmodule.py
+index cf0812a..f498809 100644
+--- a/pypy/module/sys/test/test_sysmodule.py
++++ b/pypy/module/sys/test/test_sysmodule.py
+@@ -141,6 +141,11 @@ class AppTestAppSysTests:
+ exc = raises(SystemExit, sys.exit, (1, 2, 3))
+ assert exc.value.code == (1, 2, 3)
+
++ def test_sys_multiarch(self):
++ import sys
++ multiarch = sys._multiarch
++ assert isinstance(multiarch, str)
++
+
+ class AppTestSysModulePortedFromCPython:
+
diff --git a/debian/patches/noise b/debian/patches/noise
new file mode 100644
index 0000000..2693d75
--- /dev/null
+++ b/debian/patches/noise
@@ -0,0 +1,24 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: Always output the mandelbrot
+
+So that our buildds see progress
+
+Forwarded: not-needed
+---
+ rpython/tool/ansi_print.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/rpython/tool/ansi_print.py b/rpython/tool/ansi_print.py
+index bfa40be..22ab296 100644
+--- a/rpython/tool/ansi_print.py
++++ b/rpython/tool/ansi_print.py
+@@ -7,7 +7,7 @@ from py.io import ansi_print
+ from rpython.tool.ansi_mandelbrot import Driver
+
+
+-isatty = getattr(sys.stderr, 'isatty', lambda: False)
++isatty = lambda: True
+ mandelbrot_driver = Driver()
+ wrote_dot = False # global shared state
+
diff --git a/debian/patches/pep3147-core b/debian/patches/pep3147-core
new file mode 100644
index 0000000..44fbc17
--- /dev/null
+++ b/debian/patches/pep3147-core
@@ -0,0 +1,831 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:57 +0200
+Subject: PEP3147 support
+
+Tests modified from Barry Warsaw's PEP3147 cpython support.
+
+Forwarded: no
+Last-Update: 2013-02-23
+---
+ pypy/config/pypyoption.py | 5 +
+ pypy/doc/interpreter.rst | 1 +
+ pypy/interpreter/app_main.py | 1 +
+ pypy/interpreter/main.py | 1 +
+ pypy/interpreter/test/test_main.py | 11 +
+ pypy/module/imp/importing.py | 81 +++++-
+ pypy/module/imp/interp_imp.py | 12 +
+ pypy/module/imp/moduledef.py | 3 +
+ pypy/module/imp/test/test_app.py | 7 +-
+ pypy/module/imp/test/test_import.py | 323 ++++++++++++++++++++++--
+ pypy/module/zipimport/test/test_undocumented.py | 23 +-
+ 11 files changed, 430 insertions(+), 38 deletions(-)
+
+diff --git a/pypy/config/pypyoption.py b/pypy/config/pypyoption.py
+index 9c627a9..52db19f 100644
+--- a/pypy/config/pypyoption.py
++++ b/pypy/config/pypyoption.py
+@@ -151,6 +151,11 @@ pypy_optiondescription = OptionDescription("objspace", "Object Space Options", [
+ cmdline="--soabi",
+ default=None),
+
++ StrOption("magic_tag",
++ "Tag to differentiate .pyc files for different Python interpreters",
++ cmdline="--magic_tag",
++ default=None),
++
+ BoolOption("honor__builtins__",
+ "Honor the __builtins__ key of a module dictionary",
+ default=False),
+diff --git a/pypy/doc/interpreter.rst b/pypy/doc/interpreter.rst
+index 57b5207..7f32dfd 100644
+--- a/pypy/doc/interpreter.rst
++++ b/pypy/doc/interpreter.rst
+@@ -239,6 +239,7 @@ attributes:
+
+ * ``__doc__`` the docstring of the module
+ * ``__file__`` the source filename from which this module was instantiated
++* ``__cached__`` the filename for the byte-compiled cache of this module
+ * ``__path__`` state used for relative imports
+
+ Apart from the basic Module used for importing
+diff --git a/pypy/interpreter/app_main.py b/pypy/interpreter/app_main.py
+index ec5dcab..d9f154d 100755
+--- a/pypy/interpreter/app_main.py
++++ b/pypy/interpreter/app_main.py
+@@ -742,6 +742,7 @@ def run_command_line(interactive,
+ # on the command-line.
+ filename = sys.argv[0]
+ mainmodule.__file__ = filename
++ mainmodule.__cached__ = None
+ sys.path.insert(0, sys.pypy_resolvedirof(filename))
+ # assume it's a pyc file only if its name says so.
+ # CPython goes to great lengths to detect other cases
+diff --git a/pypy/interpreter/main.py b/pypy/interpreter/main.py
+index e1141a5..24f58b7 100644
+--- a/pypy/interpreter/main.py
++++ b/pypy/interpreter/main.py
+@@ -43,6 +43,7 @@ def _run_eval_string(source, filename, space, eval):
+ space.setitem(w_globals, space.newtext('__builtins__'), space.builtin)
+ if filename is not None:
+ space.setitem(w_globals, space.newtext('__file__'), space.newtext(filename))
++ space.setitem(w_globals, space.newtext('__cached__'), space.w_None)
+
+ retval = pycode.exec_code(space, w_globals, w_globals)
+ if eval:
+diff --git a/pypy/interpreter/test/test_main.py b/pypy/interpreter/test/test_main.py
+index dc7e536..54eebe2 100644
+--- a/pypy/interpreter/test/test_main.py
++++ b/pypy/interpreter/test/test_main.py
+@@ -13,6 +13,12 @@ def main():
+ main()
+ """
+
++test__file__code = """
++assert __file__ is not None
++assert __cached__ is None
++print len('hello world')
++"""
++
+ # On module test we want to ensure that the called module __name__ is
+ # '__main__' and argv is set as expected.
+ testmodulecode = """
+@@ -39,12 +45,14 @@ def checkoutput(space, expected_output, f, *args):
+ assert capturefn.read(mode='rU') == expected_output
+
+ testfn = udir.join('tmp_hello_world.py')
++test__file__fn = udir.join('test__file__.py')
+ testmodule = 'tmp_hello_module'
+ testpackage = 'tmp_package'
+
+ class TestMain:
+ def setup_class(cls):
+ testfn.write(testcode, 'w')
++ test__file__fn.write(test__file__code, 'w')
+ udir.join(testmodule + '.py').write(testmodulecode, 'w')
+ udir.ensure(testpackage, '__init__.py')
+ udir.join(testpackage, testmodule + '.py').write(testmodulecode, 'w')
+@@ -78,3 +86,6 @@ class TestMain:
+ testmodule, ['hello world'])
+ checkoutput(self.space, testresultoutput, main.run_module,
+ testpackage + '.' + testmodule, ['hello world'])
++
++ def test__file__file(self):
++ checkoutput(self.space, testresultoutput, main.run_file, str(test__file__fn))
+diff --git a/pypy/module/imp/importing.py b/pypy/module/imp/importing.py
+index 24e5b31..12635cb 100644
+--- a/pypy/module/imp/importing.py
++++ b/pypy/module/imp/importing.py
+@@ -12,7 +12,7 @@ from pypy.interpreter.baseobjspace import W_Root, CannotHaveLock
+ from pypy.interpreter.eval import Code
+ from pypy.interpreter.pycode import PyCode
+ from pypy.interpreter.streamutil import wrap_streamerror
+-from rpython.rlib import streamio, jit
++from rpython.rlib import rstring, streamio, jit
+ from rpython.rlib.streamio import StreamErrors
+ from rpython.rlib.objectmodel import we_are_translated, specialize
+ from pypy.module.sys.version import PYPY_VERSION
+@@ -40,6 +40,7 @@ SO = '.pyd' if _WIN32 else '.so'
+ # split the two usages again.
+ #DEFAULT_SOABI = 'pypy-%d%d' % PYPY_VERSION[:2]
+ DEFAULT_SOABI = 'pypy-41'
++DEFAULT_MAGIC_TAG = DEFAULT_SOABI
+
+ @specialize.memo()
+ def get_so_extension(space):
+@@ -605,6 +606,7 @@ def find_module(space, modulename, w_modulename, partname, w_path,
+ def _prepare_module(space, w_mod, filename, pkgdir):
+ space.sys.setmodule(w_mod)
+ space.setattr(w_mod, space.newtext('__file__'), space.newtext(filename))
++ space.setattr(w_mod, space.newtext('__cached__'), space.w_None)
+ space.setattr(w_mod, space.newtext('__doc__'), space.w_None)
+ if pkgdir is not None:
+ space.setattr(w_mod, space.newtext('__path__'), space.newlist([space.newtext(pkgdir)]))
+@@ -885,6 +887,65 @@ def get_pyc_magic(space):
+
+ return default_magic
+
++def get_pyc_tag(space):
++ """Return the tag used in __pycache__ filenames"""
++ # XXX CPython testing hack: use the default
++ if not we_are_translated():
++ return DEFAULT_MAGIC_TAG
++
++ if space.config.objspace.magic_tag is not None:
++ magic_tag = space.config.objspace.magic_tag
++ else:
++ magic_tag = DEFAULT_MAGIC_TAG
++ return magic_tag
++
++def make_compiled_pathname(space, pathname):
++ """
++ The PEP 3147 path to the byte-compiled file associated with the source path
++ """
++ pathname = rstring.assert_str0(pathname)
++
++ index = pathname.rfind(os.sep)
++ if index < 0:
++ pycachedir = '__pycache__'
++ basename = pathname
++ else:
++ pycachedir = pathname[:index + 1] + '__pycache__'
++ basename = pathname[index + 1:]
++
++ index = basename.rfind('.')
++ if index > 0:
++ basename = basename[:index + 1]
++
++ filename = basename + get_pyc_tag(space) + '.pyc'
++ cpathname = os.path.join(pycachedir, filename)
++ return cpathname
++
++def make_source_pathname(space, cpathname):
++ """
++ Given the path to a PEP 3147 file name, return the associated source code
++ file path.
++ """
++ cpathname = rstring.assert_str0(cpathname)
++
++ index = cpathname.rfind(os.sep)
++ if index < 0:
++ raise OperationError(space.w_ValueError, space.newtext(
++ "Not a PEP 3147 pyc path: %s" % cpathname))
++ pycachedir = cpathname[:index]
++ filename = cpathname[index + 1:]
++
++ index = pycachedir.rfind(os.sep)
++ extension = '.' + get_pyc_tag(space) + '.pyc'
++ ext_index = len(filename) - len(extension)
++ if (index < 0 or pycachedir[index + 1:] != '__pycache__'
++ or not filename.endswith(extension)
++ or ext_index < 0):
++ raise OperationError(space.w_ValueError, space.newtext(
++ "Not a PEP 3147 pyc path: %s" % cpathname))
++ basedir = pycachedir[:index]
++ basename = filename[:ext_index]
++ return os.path.join(basedir, basename + '.py')
+
+ def parse_source_module(space, pathname, source):
+ """ Parse a source file and return the corresponding code object """
+@@ -927,7 +988,7 @@ def load_source_module(space, w_modulename, w_mod, pathname, source, fd,
+ src_stat = os.fstat(fd)
+ except OSError as e:
+ raise wrap_oserror(space, e, pathname) # better report this error
+- cpathname = pathname + 'c'
++ cpathname = make_compiled_pathname(space, pathname)
+ mtime = int(src_stat[stat.ST_MTIME])
+ mode = src_stat[stat.ST_MODE]
+ stream = check_compiled_module(space, cpathname, mtime)
+@@ -939,7 +1000,7 @@ def load_source_module(space, w_modulename, w_mod, pathname, source, fd,
+ _wrap_readall(space, stream))
+ finally:
+ _close_ignore(stream)
+- space.setattr(w_mod, space.newtext('__file__'), space.newtext(cpathname))
++ space.setattr(w_mod, space.newtext('__file__'), space.newtext(pathname))
+ else:
+ code_w = parse_source_module(space, pathname, source)
+
+@@ -955,6 +1016,7 @@ def load_source_module(space, w_modulename, w_mod, pathname, source, fd,
+ if optimize >= 2:
+ code_w.remove_docstrings(space)
+
++ space.setattr(w_mod, space.newtext('__cached__'), space.newtext(cpathname))
+ update_code_filenames(space, code_w, pathname)
+ return exec_code_module(space, w_mod, code_w, w_modulename,
+ check_afterwards=check_afterwards)
+@@ -1117,6 +1179,19 @@ def write_compiled_module(space, co, cpathname, src_mode, src_mtime):
+ raise
+ #print "Problem while marshalling %s, skipping" % cpathname
+ return
++
++ # Create PEP3147 __pycache__ dir if necessary
++ index = cpathname.rfind(os.sep)
++ if index < 0:
++ return
++ pycachedir = cpathname[:index]
++ if not os.path.isdir(pycachedir):
++ mode = src_mode | 0755
++ try:
++ os.mkdir(pycachedir, mode)
++ except OSError:
++ return
++
+ #
+ # Careful here: we must not crash nor leave behind something that looks
+ # too much like a valid pyc file but really isn't one.
+diff --git a/pypy/module/imp/interp_imp.py b/pypy/module/imp/interp_imp.py
+index 09127ab..7d133f5 100644
+--- a/pypy/module/imp/interp_imp.py
++++ b/pypy/module/imp/interp_imp.py
+@@ -36,6 +36,18 @@ def get_magic(space):
+ d = x & 0xff
+ return space.newbytes(chr(a) + chr(b) + chr(c) + chr(d))
+
++def get_tag(space):
++ return space.newtext(importing.get_pyc_tag(space))
++
++@unwrap_spec(path='fsencode')
++def cache_from_source(space, path, w_debug_override=None):
++ # w_debug_override is ignored, pypy doesn't support __debug__
++ return space.newtext(importing.make_compiled_pathname(space, path))
++
++@unwrap_spec(path='fsencode')
++def source_from_cache(space, path):
++ return space.newtext(importing.make_source_pathname(space, path))
++
+ def get_file(space, w_file, filename, filemode):
+ if space.is_none(w_file):
+ try:
+diff --git a/pypy/module/imp/moduledef.py b/pypy/module/imp/moduledef.py
+index 39b577a..fb1023a 100644
+--- a/pypy/module/imp/moduledef.py
++++ b/pypy/module/imp/moduledef.py
+@@ -17,6 +17,9 @@ class Module(MixedModule):
+ 'get_suffixes': 'interp_imp.get_suffixes',
+
+ 'get_magic': 'interp_imp.get_magic',
++ 'get_tag': 'interp_imp.get_tag',
++ 'cache_from_source': 'interp_imp.cache_from_source',
++ 'source_from_cache': 'interp_imp.source_from_cache',
+ 'find_module': 'interp_imp.find_module',
+ 'load_module': 'interp_imp.load_module',
+ 'load_source': 'interp_imp.load_source',
+diff --git a/pypy/module/imp/test/test_app.py b/pypy/module/imp/test/test_app.py
+index f095168..70c0a00 100644
+--- a/pypy/module/imp/test/test_app.py
++++ b/pypy/module/imp/test/test_app.py
+@@ -150,6 +150,7 @@ class AppTestImpModule:
+
+ def test_rewrite_pyc_check_code_name(self):
+ # This one is adapted from cpython's Lib/test/test_import.py
++ from imp import cache_from_source
+ from os import chmod
+ from os.path import join
+ from sys import modules, path
+@@ -159,6 +160,7 @@ class AppTestImpModule:
+ import sys
+ code_filename = sys._getframe().f_code.co_filename
+ module_filename = __file__
++ module_bytefilename = __cached__
+ constant = 1
+ def func():
+ pass
+@@ -170,7 +172,7 @@ class AppTestImpModule:
+ file_name = join(dir_name, module_name + '.py')
+ with open(file_name, "wb") as f:
+ f.write(code)
+- compiled_name = file_name + ("c" if __debug__ else "o")
++ compiled_name = cache_from_source(file_name)
+ chmod(file_name, 0777)
+
+ # Setup
+@@ -188,7 +190,8 @@ class AppTestImpModule:
+ try:
+ # Ensure proper results
+ assert mod != orig_module
+- assert mod.module_filename == compiled_name
++ assert mod.module_filename == file_name
++ assert mod.module_bytefilename == compiled_name
+ assert mod.code_filename == file_name
+ assert mod.func_filename == file_name
+ finally:
+diff --git a/pypy/module/imp/test/test_import.py b/pypy/module/imp/test/test_import.py
+index a7b92a0..e5851ea 100644
+--- a/pypy/module/imp/test/test_import.py
++++ b/pypy/module/imp/test/test_import.py
+@@ -8,7 +8,7 @@ from rpython.rlib import streamio
+ from pypy.tool.option import make_config
+ from pypy.tool.pytest.objspace import maketestobjspace
+ import pytest
+-import sys, os
++import shutil, sys, os
+ import tempfile, marshal
+
+ from pypy.module.imp import importing
+@@ -107,12 +107,18 @@ def setup_directory_structure(space):
+
+ # create compiled/x.py and a corresponding pyc file
+ p = setuppkg("compiled", x = "x = 84")
++ try:
++ p.mkdir('__pycache__')
++ except py.error.EEXIST:
++ pass
++ cpathname = p.join('__pycache__').join(
++ 'x.' + importing.get_pyc_tag(space) + '.pyc')
+ if conftest.option.runappdirect:
+ import marshal, stat, struct, imp
+ code = py.code.Source(p.join("x.py").read()).compile()
+ s3 = marshal.dumps(code)
+ s2 = struct.pack("<i", os.stat(str(p.join("x.py")))[stat.ST_MTIME])
+- p.join("x.pyc").write(imp.get_magic() + s2 + s3, mode='wb')
++ cpathname.write(imp.get_magic() + s2 + s3, mode='wb')
+ else:
+ w = space.wrap
+ w_modname = w("compiled.x")
+@@ -127,8 +133,9 @@ def setup_directory_structure(space):
+ stream.close()
+ if not space.config.translation.sandbox:
+ # also create a lone .pyc file
+- p.join('lone.pyc').write(p.join('x.pyc').read(mode='rb'),
+- mode='wb')
++
++ p.join(importing.make_compiled_pathname(space, 'lone.py')
++ ).write(cpathname.read(mode='rb'), mode='wb')
+
+ # create a .pyw file
+ p = setuppkg("windows", x = "x = 78")
+@@ -873,6 +880,8 @@ def _testfilesource(source="x=42"):
+
+ class TestPycStuff:
+ # ___________________ .pyc related stuff _________________
++ def setup_class(cls):
++ cls.tag = importing.get_pyc_tag(cls.space)
+
+ def test_check_compiled_module(self):
+ space = self.space
+@@ -1013,7 +1022,8 @@ class TestPycStuff:
+ ret = space.int_w(w_ret)
+ assert ret == 42
+
+- cpathname = udir.join('test.pyc')
++ cpathname = importing.make_compiled_pathname(space, 'test.py')
++ cpathname = udir.join(cpathname)
+ assert cpathname.check()
+ cpathname.remove()
+
+@@ -1031,7 +1041,8 @@ class TestPycStuff:
+ write_pyc=False)
+ finally:
+ stream.close()
+- cpathname = udir.join('test.pyc')
++ cpathname = importing.make_compiled_pathname(space, 'test.py')
++ cpathname = udir.join(cpathname)
+ assert not cpathname.check()
+
+ def test_load_source_module_dont_write_bytecode(self):
+@@ -1051,7 +1062,8 @@ class TestPycStuff:
+ space.setattr(space.sys, space.wrap('dont_write_bytecode'),
+ space.w_False)
+ stream.close()
+- cpathname = udir.join('test.pyc')
++ cpathname = importing.make_compiled_pathname(space, 'test.py')
++ cpathname = udir.join(cpathname)
+ assert not cpathname.check()
+
+ def test_load_source_module_syntaxerror(self):
+@@ -1071,7 +1083,8 @@ class TestPycStuff:
+ pass
+ stream.close()
+
+- cpathname = udir.join('test.pyc')
++ cpathname = importing.make_compiled_pathname(space, 'test.py')
++ cpathname = udir.join(cpathname)
+ assert not cpathname.check()
+
+ def test_load_source_module_importerror(self):
+@@ -1092,7 +1105,8 @@ class TestPycStuff:
+ stream.close()
+
+ # And the .pyc has been generated
+- cpathname = udir.join('test.pyc')
++ cpathname = importing.make_compiled_pathname(space, 'test.py')
++ cpathname = udir.join(cpathname)
+ assert cpathname.check()
+
+ def test_write_compiled_module(self):
+@@ -1109,7 +1123,8 @@ class TestPycStuff:
+ pycode = w_ret
+ assert type(pycode) is pypy.interpreter.pycode.PyCode
+
+- cpathname = str(udir.join('cpathname.pyc'))
++ cpathname = importing.make_compiled_pathname(space, 'cpathname.py')
++ cpathname = str(udir.join(cpathname))
+ mode = 0777
+ mtime = 12345
+ importing.write_compiled_module(space,
+@@ -1181,6 +1196,271 @@ class TestPycStuff:
+ finally:
+ stream.close()
+
++ def test_make_compiled_pathname(self):
++ # Given the path to a .py file, return the path to its PEP 3147
++ # defined .pyc file (i.e. under __pycache__).
++ cpathname = importing.make_compiled_pathname(self.space,
++ '/foo/bar/baz/qux.py')
++ expected = '/foo/bar/baz/__pycache__/qux.%s.pyc' % self.tag
++ assert cpathname == expected
++
++ def test_make_compiled_pathname_cwd(self):
++ cpathname = importing.make_compiled_pathname(self.space, 'foo.py')
++ expected = os.sep.join(('__pycache__', 'foo.%s.pyc' % self.tag))
++ assert cpathname == expected
++
++ @pytest.mark.skipif('os.altsep is None')
++ def test_altsep_make_compiled_pathname(self):
++ # Windows path and PEP 3147.
++ cpathname = importing.make_compiled_pathname(self.space,
++ '\\foo\\bar\\baz\\qux.py')
++ expected = '\\foo\\bar\\baz\\__pycache__\\qux.%s.pyc' % self.tag
++ assert cpathname == expected
++
++ @pytest.mark.skipif('os.altsep is None')
++ def test_altsep_and_sep_make_compiled_pathname(self):
++ # Windows path and PEP 3147 where altsep is right of sep.
++ cpathname = importing.make_compiled_pathname(self.space,
++ '\\foo\\bar/baz\\qux.py')
++ expected = '\\foo\\bar/baz\\__pycache__\\qux.%s.pyc' % self.tag
++ assert cpathname == expected
++
++ @pytest.mark.skipif('os.altsep is None')
++ def test_sep_altsep_and_sep_make_compiled_pathname(self):
++ # Windows path and PEP 3147 where sep is right of altsep.
++ cpathname = importing.make_compiled_pathname(self.space,
++ '\\foo\\bar\\baz/qux.py')
++ expected = '\\foo\\bar\\baz/__pycache__/qux.%s.pyc' % self.tag
++ assert cpathname == expected
++
++ def test_make_source_pathname(self):
++ # Given the path to a PEP 3147 defined .pyc file, return the path to
++ # its source. This tests the good path.
++ pathname = importing.make_source_pathname(self.space,
++ '/foo/bar/baz/__pycache__/qux.%s.pyc' % self.tag)
++ assert pathname == '/foo/bar/baz/qux.py'
++
++ def test_make_source_pathname_bad_path(self):
++ # When the path to a pyc file is not in PEP 3147 format, a ValueError
++ # is raised.
++ try:
++ importing.make_source_pathname(self.space, '/foo/bar/bazqux.pyc')
++ except OperationError, e:
++ if not e.match(self.space, self.space.w_ValueError):
++ raise
++ else:
++ raise Exception("Should have raised ValueError")
++
++ def test_make_source_pathname_no_slash(self):
++ # No slashes at all in path -> ValueError
++ try:
++ importing.make_source_pathname(self.space, 'foo.%s.pyc' % self.tag)
++ except OperationError, e:
++ if not e.match(self.space, self.space.w_ValueError):
++ raise
++ else:
++ raise Exception("Should have raised ValueError")
++
++ def test_make_source_pathname_too_few_dots(self):
++ # Too few dots in final path component -> ValueError
++ try:
++ importing.make_source_pathname(self.space, '__pycache__/foo.pyc')
++ except OperationError, e:
++ if not e.match(self.space, self.space.w_ValueError):
++ raise
++ else:
++ raise Exception("Should have raised ValueError")
++
++ def test_make_source_pathname_too_many_dots(self):
++ # Too many dots in final path component -> ValueError
++ pathname = '__pycache__/foo.%s.foo.pyc' % self.tag
++ try:
++ importing.make_source_pathname(self.space, pathname)
++ except OperationError, e:
++ if not e.match(self.space, self.space.w_ValueError):
++ raise
++ else:
++ raise Exception("Should have raised ValueError")
++
++ def test_make_source_pathname_no__pycache__(self):
++ # Another problem with the path -> ValueError
++ pathname = '/foo/bar/foo.%s.foo.pyc' % self.tag
++ try:
++ importing.make_source_pathname(self.space, pathname)
++ except OperationError, e:
++ if not e.match(self.space, self.space.w_ValueError):
++ raise
++ else:
++ raise Exception("Should have raised ValueError")
++
++
++class AppTestPEP3147Pyc(object):
++ def test_package___file__(self):
++ import os, sys, shutil
++ # Test that a package's __file__ points to the right source directory.
++ try:
++ os.mkdir('pep3147')
++ sys.path.insert(0, os.curdir)
++ # Touch the __init__.py file.
++ with open('pep3147/__init__.py', 'w'):
++ pass
++ m = __import__('pep3147')
++ # Ensure we load the pyc file.
++ del sys.modules['pep3147']
++ m = __import__('pep3147')
++ assert m.__file__ == os.sep.join(('.', 'pep3147', '__init__.py'))
++ finally:
++ if sys.path[0] == os.curdir:
++ del sys.path[0]
++ shutil.rmtree('pep3147')
++
++
++class AppTestPycache(object):
++ # Test the various PEP 3147 related behaviors.
++
++ def setup_class(cls):
++ space = cls.space
++
++ cls.module = '_app_test_pycache'
++ cls.filename = cls.module + '.py'
++ cls.w_module = space.wrap(cls.module)
++ cls.w_filename = space.wrap(cls.filename)
++ cls.w_tag = space.wrap(importing.get_pyc_tag(space))
++
++ def setup_method(cls, method):
++ if os.path.exists('__pycache__'):
++ shutil.rmtree('__pycache__')
++ if os.path.exists(cls.filename):
++ os.unlink(cls.filename)
++
++ with open(cls.filename, 'w') as fp:
++ print >> fp, '# This is a test file written by test_import.py'
++
++ def teardown_method(cls, method):
++ if os.path.exists('__pycache__'):
++ shutil.rmtree('__pycache__')
++ if os.path.exists(cls.filename):
++ os.unlink(cls.filename)
++
++ def test_import_pyc_path(self):
++ import sys, os
++ sys.path.insert(0, '.')
++ try:
++ assert not os.path.exists('__pycache__')
++ __import__(self.module)
++ assert os.path.exists('__pycache__')
++ assert os.path.exists(os.path.join(
++ '__pycache__', '%s.%s.pyc' % (self.module, self.tag)))
++ finally:
++ del sys.path[0]
++ sys.modules.pop(self.module, None)
++
++ @pytest.mark.skipif('os.name != "posix"')
++ def test_unwritable_directory(self):
++ # When the umask causes the new __pycache__ directory to be
++ # unwritable, the import still succeeds but no .pyc file is written.
++ import os, sys
++ sys.path.insert(0, '.')
++ try:
++ oldmask = os.umask(0222)
++ try:
++ __import__(self.module)
++ finally:
++ os.umask(oldmask)
++ assert os.path.exists('__pycache__')
++ assert not os.path.exists(os.path.join(
++ '__pycache__', '%s.%s.pyc' % (self.module, self.tag)))
++ finally:
++ del sys.path[0]
++ sys.modules.pop(self.module, None)
++
++ def test_missing_source(self):
++ # With PEP 3147 cache layout, removing the source but leaving the pyc
++ # file does not satisfy the import.
++ import imp, os, sys
++ sys.path.insert(0, '.')
++ try:
++ __import__(self.module)
++ pyc_file = imp.cache_from_source(self.filename)
++ assert os.path.exists(pyc_file)
++ os.remove(self.filename)
++ del sys.modules[self.module]
++ try:
++ __import__(self.module)
++ except ImportError:
++ pass
++ else:
++ raise "Expected ImportError to be raised"
++ finally:
++ del sys.path[0]
++ sys.modules.pop(self.module, None)
++
++ def test___cached__(self):
++ # Modules now also have an __cached__ that points to the pyc file.
++ import imp, os, sys
++ sys.path.insert(0, '.')
++ try:
++ m = __import__(self.module)
++ pyc_file = imp.cache_from_source(self.filename)
++ assert m.__cached__ == os.path.join(os.curdir, pyc_file)
++ finally:
++ del sys.path[0]
++ sys.modules.pop(self.module, None)
++
++ def test_package___cached__(self):
++ # Like test___cached__ but for packages.
++ import imp, os, shutil, sys
++ sys.path.insert(0, '.')
++ try:
++ os.mkdir('_test_pep3147')
++ # Touch the __init__.py
++ with open(os.path.join('_test_pep3147', '__init__.py'), 'w'):
++ pass
++ with open(os.path.join('_test_pep3147', 'foo.py'), 'w'):
++ pass
++ m = __import__('_test_pep3147.foo')
++ init_pyc = imp.cache_from_source(
++ os.path.join('_test_pep3147', '__init__.py'))
++ assert m.__cached__ == os.path.join(os.curdir, init_pyc)
++ foo_pyc = imp.cache_from_source(os.path.join('_test_pep3147',
++ 'foo.py'))
++ assert (sys.modules['_test_pep3147.foo'].__cached__
++ == os.path.join(os.curdir, foo_pyc))
++ finally:
++ shutil.rmtree('_test_pep3147')
++ del sys.path[0]
++ sys.modules.pop('_test_pep3147.foo', None)
++ sys.modules.pop('_test_pep3147', None)
++
++ def test_package___cached___from_pyc(self):
++ # Like test___cached__ but ensuring __cached__ when imported from a
++ # PEP 3147 pyc file.
++ import imp, os, shutil, sys
++ sys.path.insert(0, '.')
++ try:
++ os.mkdir('_test_pep3147')
++ # Touch the __init__.py
++ with open(os.path.join('_test_pep3147', '__init__.py'), 'w'):
++ pass
++ with open(os.path.join('_test_pep3147', 'foo.py'), 'w'):
++ pass
++ m = __import__('_test_pep3147.foo')
++ del sys.modules['_test_pep3147.foo']
++ del sys.modules['_test_pep3147']
++ m = __import__('_test_pep3147.foo')
++ init_pyc = imp.cache_from_source(
++ os.path.join('_test_pep3147', '__init__.py'))
++ assert m.__cached__ == os.path.join(os.curdir, init_pyc)
++ foo_pyc = imp.cache_from_source(os.path.join('_test_pep3147',
++ 'foo.py'))
++ assert (sys.modules['_test_pep3147.foo'].__cached__
++ == os.path.join(os.curdir, foo_pyc))
++ finally:
++ shutil.rmtree('_test_pep3147')
++ del sys.path[0]
++ sys.modules.pop('_test_pep3147.foo', None)
++ sys.modules.pop('_test_pep3147', None)
++
+
+ def test_PYTHONPATH_takes_precedence(space):
+ if sys.platform == "win32":
+@@ -1486,24 +1766,21 @@ class AppTestWriteBytecode(object):
+ def test_default(self):
+ import os.path
+ from test_bytecode import a
+- assert a.__file__.endswith('a.py')
+- assert os.path.exists(a.__file__ + 'c') == (not self.sandbox)
++ assert os.path.exists(a.__cached__) == (not self.sandbox)
+
+ def test_write_bytecode(self):
+ import os.path
+ import sys
+ sys.dont_write_bytecode = False
+ from test_bytecode import b
+- assert b.__file__.endswith('b.py')
+- assert os.path.exists(b.__file__ + 'c')
++ assert os.path.exists(b.__cached__)
+
+ def test_dont_write_bytecode(self):
+ import os.path
+ import sys
+ sys.dont_write_bytecode = True
+ from test_bytecode import c
+- assert c.__file__.endswith('c.py')
+- assert not os.path.exists(c.__file__ + 'c')
++ assert not os.path.exists(c.__cached__)
+
+
+ class AppTestWriteBytecodeSandbox(AppTestWriteBytecode):
+@@ -1523,25 +1800,21 @@ class _AppTestLonePycFileBase(object):
+
+ def test_import_possibly_from_pyc(self):
+ from compiled import x
+- assert x.__file__.endswith('x.pyc')
++ assert x.__file__.endswith('x.py')
++ assert x.__cached__.endswith('.pyc')
+ try:
+ from compiled import lone
+ except ImportError:
+- assert not self.lonepycfiles, "should have found 'lone.pyc'"
++ assert not self.lonepycfiles, "should have found 'lone.TAG.pyc'"
+ else:
+- assert self.lonepycfiles, "should not have found 'lone.pyc'"
+- assert lone.__file__.endswith('lone.pyc')
++ assert self.lonepycfiles, "should not have found 'lone.TAG.pyc'"
++ assert lone.__cached__.endswith('.pyc')
+
+ class AppTestNoLonePycFile(_AppTestLonePycFileBase):
+ spaceconfig = {
+ "objspace.lonepycfiles": False
+ }
+
+-class AppTestLonePycFile(_AppTestLonePycFileBase):
+- spaceconfig = {
+- "objspace.lonepycfiles": True
+- }
+-
+
+ class AppTestMultithreadedImp(object):
+ spaceconfig = dict(usemodules=['thread', 'time'])
+diff --git a/pypy/module/zipimport/test/test_undocumented.py b/pypy/module/zipimport/test/test_undocumented.py
+index 7271f20..44f47c7 100644
+--- a/pypy/module/zipimport/test/test_undocumented.py
++++ b/pypy/module/zipimport/test/test_undocumented.py
+@@ -31,12 +31,11 @@ class AppTestZipImport:
+ Clears zipimport._zip_directory_cache.
+
+ """
+- import zipimport, os, shutil, zipfile, py_compile
++ import zipimport, os, shutil, zipfile, py_compile, imp
+ example_code = 'attr = None'
+ TESTFN = '@test'
+ zipimport._zip_directory_cache.clear()
+ zip_path = TESTFN + '.zip'
+- bytecode_suffix = 'c'# if __debug__ else 'o'
+ zip_file = zipfile.ZipFile(zip_path, 'w')
+ for path in created_paths:
+ if os.sep in path:
+@@ -53,13 +52,13 @@ class AppTestZipImport:
+ zip_file.write(code_path)
+ if bytecode:
+ py_compile.compile(code_path, doraise=True)
+- zip_file.write(code_path + bytecode_suffix)
++ bytecode_path = imp.cache_from_source(code_path)
++ zip_file.write(bytecode_path)
+ zip_file.close()
+ return os.path.abspath(zip_path)
+
+ def w_cleanup_zipfile(self, created_paths):
+- import os, shutil
+- bytecode_suffix = 'c'# if __debug__ else 'o'
++ import os, shutil, imp
+ zip_path = '@test.zip'
+ for path in created_paths:
+ if os.sep in path:
+@@ -67,9 +66,17 @@ class AppTestZipImport:
+ if os.path.exists(directory):
+ shutil.rmtree(directory)
+ else:
+- for suffix in ('.py', '.py' + bytecode_suffix):
+- if os.path.exists(path + suffix):
+- os.unlink(path + suffix)
++ source_file = path + '.py'
++ if os.path.exists(source_file):
++ os.unlink(source_file)
++ bytecode_file = imp.cache_from_source(source_file)
++ if os.path.exists(bytecode_file):
++ os.unlink(bytecode_file)
++ try:
++ os.rmdir(os.path.dirname(bytecode_file))
++ except OSError:
++ pass
++
+ os.unlink(zip_path)
+
+ def test_inheritance(self):
diff --git a/debian/patches/pep3147-issue11254 b/debian/patches/pep3147-issue11254
new file mode 100644
index 0000000..912301a
--- /dev/null
+++ b/debian/patches/pep3147-issue11254
@@ -0,0 +1,340 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:57 +0200
+Subject: PEP3147 distutils patches
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+Backported from cpython.
+
+Origin: cpython, http://hg.python.org/cpython/rev/27a36b05caed
+Origin: cpython, http://hg.python.org/cpython/rev/651e84363001
+Origin: cpython, http://hg.python.org/cpython/rev/ea926dff958f
+Bug-cpython: http://bugs.python.org/issue11254
+Author: Jeff Ramnani
+Author: Éric Araujo <merwok@netwok.org>
+Author: Stefano Rivera <stefanor@debian.org>
+Last-Update: 2011-12-20
+---
+ lib-python/2.7/distutils/command/build_py.py | 7 +-
+ lib-python/2.7/distutils/command/install_lib.py | 7 +-
+ lib-python/2.7/distutils/tests/test_build_py.py | 76 ++++++++++++++--------
+ lib-python/2.7/distutils/tests/test_install_lib.py | 60 ++++++++++-------
+ lib-python/2.7/distutils/util.py | 17 +++--
+ 5 files changed, 109 insertions(+), 58 deletions(-)
+
+diff --git a/lib-python/2.7/distutils/command/build_py.py b/lib-python/2.7/distutils/command/build_py.py
+index c123c62..f4cc5c9 100644
+--- a/lib-python/2.7/distutils/command/build_py.py
++++ b/lib-python/2.7/distutils/command/build_py.py
+@@ -5,6 +5,7 @@ Implements the Distutils 'build_py' command."""
+ __revision__ = "$Id$"
+
+ import os
++import imp
+ import sys
+ from glob import glob
+
+@@ -314,9 +315,11 @@ class build_py(Command):
+ outputs.append(filename)
+ if include_bytecode:
+ if self.compile:
+- outputs.append(filename + "c")
++ outputs.append(imp.cache_from_source(filename,
++ debug_override=True))
+ if self.optimize > 0:
+- outputs.append(filename + "o")
++ outputs.append(imp.cache_from_source(filename,
++ debug_override=False))
+
+ outputs += [
+ os.path.join(build_dir, filename)
+diff --git a/lib-python/2.7/distutils/command/install_lib.py b/lib-python/2.7/distutils/command/install_lib.py
+index 043e8b6..1f6141d 100644
+--- a/lib-python/2.7/distutils/command/install_lib.py
++++ b/lib-python/2.7/distutils/command/install_lib.py
+@@ -6,6 +6,7 @@ Implements the Distutils 'install_lib' command
+ __revision__ = "$Id$"
+
+ import os
++import imp
+ import sys
+
+ from distutils.core import Command
+@@ -169,9 +170,11 @@ class install_lib(Command):
+ if ext != PYTHON_SOURCE_EXTENSION:
+ continue
+ if self.compile:
+- bytecode_files.append(py_file + "c")
++ bytecode_files.append(imp.cache_from_source(
++ py_file, debug_override=True))
+ if self.optimize > 0:
+- bytecode_files.append(py_file + "o")
++ bytecode_files.append(imp.cache_from_source(
++ py_file, debug_override=False))
+
+ return bytecode_files
+
+diff --git a/lib-python/2.7/distutils/tests/test_build_py.py b/lib-python/2.7/distutils/tests/test_build_py.py
+index c4498bc..7c12dbf 100644
+--- a/lib-python/2.7/distutils/tests/test_build_py.py
++++ b/lib-python/2.7/distutils/tests/test_build_py.py
+@@ -2,7 +2,7 @@
+
+ import os
+ import sys
+-import StringIO
++import imp
+ import unittest
+
+ from distutils.command.build_py import build_py
+@@ -59,17 +59,16 @@ class BuildPyTestCase(support.TempdirManager,
+ files = os.listdir(pkgdest)
+ self.assertIn("__init__.py", files)
+ self.assertIn("README.txt", files)
++ pycache_dir = os.path.join(pkgdest, "__pycache__")
++ pyc_files = os.listdir(pycache_dir)
+ # XXX even with -O, distutils writes pyc, not pyo; bug?
+ if sys.dont_write_bytecode:
+- self.assertNotIn("__init__.pyc", files)
++ self.assertNotIn("__init__.%s.pyc" % imp.get_tag(), pyc_files)
+ else:
+- self.assertIn("__init__.pyc", files)
++ self.assertIn("__init__.%s.pyc" % imp.get_tag(), pyc_files)
+
+ def test_empty_package_dir(self):
+- # See SF 1668596/1720897.
+- cwd = os.getcwd()
+-
+- # create the distribution files.
++ # See bugs #1668596/#1720897
+ sources = self.mkdtemp()
+ open(os.path.join(sources, "__init__.py"), "w").close()
+
+@@ -78,26 +77,51 @@ class BuildPyTestCase(support.TempdirManager,
+ open(os.path.join(testdir, "testfile"), "w").close()
+
+ os.chdir(sources)
+- old_stdout = sys.stdout
+- sys.stdout = StringIO.StringIO()
++ dist = Distribution({"packages": ["pkg"],
++ "package_dir": {"pkg": ""},
++ "package_data": {"pkg": ["doc/*"]}})
++ # script_name need not exist, it just need to be initialized
++ dist.script_name = os.path.join(sources, "setup.py")
++ dist.script_args = ["build"]
++ dist.parse_command_line()
+
+ try:
+- dist = Distribution({"packages": ["pkg"],
+- "package_dir": {"pkg": ""},
+- "package_data": {"pkg": ["doc/*"]}})
+- # script_name need not exist, it just need to be initialized
+- dist.script_name = os.path.join(sources, "setup.py")
+- dist.script_args = ["build"]
+- dist.parse_command_line()
+-
+- try:
+- dist.run_commands()
+- except DistutilsFileError:
+- self.fail("failed package_data test when package_dir is ''")
+- finally:
+- # Restore state.
+- os.chdir(cwd)
+- sys.stdout = old_stdout
++ dist.run_commands()
++ except DistutilsFileError:
++ self.fail("failed package_data test when package_dir is ''")
++
++ @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile disabled')
++ def test_byte_compile(self):
++ project_dir, dist = self.create_dist(py_modules=['boiledeggs'])
++ os.chdir(project_dir)
++ self.write_file('boiledeggs.py', 'import antigravity')
++ cmd = build_py(dist)
++ cmd.compile = 1
++ cmd.build_lib = 'here'
++ cmd.finalize_options()
++ cmd.run()
++
++ found = os.listdir(cmd.build_lib)
++ self.assertEqual(sorted(found), ['__pycache__', 'boiledeggs.py'])
++ found = os.listdir(os.path.join(cmd.build_lib, '__pycache__'))
++ self.assertEqual(found, ['boiledeggs.%s.pyc' % imp.get_tag()])
++
++ @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile disabled')
++ def test_byte_compile_optimized(self):
++ project_dir, dist = self.create_dist(py_modules=['boiledeggs'])
++ os.chdir(project_dir)
++ self.write_file('boiledeggs.py', 'import antigravity')
++ cmd = build_py(dist)
++ cmd.compile = 0
++ cmd.optimize = 1
++ cmd.build_lib = 'here'
++ cmd.finalize_options()
++ cmd.run()
++
++ found = os.listdir(cmd.build_lib)
++ self.assertEqual(sorted(found), ['__pycache__', 'boiledeggs.py'])
++ found = os.listdir(os.path.join(cmd.build_lib, '__pycache__'))
++ self.assertEqual(sorted(found), ['boiledeggs.%s.pyo' % imp.get_tag()])
+
+ def test_dir_in_package_data(self):
+ """
+@@ -132,7 +156,7 @@ class BuildPyTestCase(support.TempdirManager,
+
+ def test_dont_write_bytecode(self):
+ # makes sure byte_compile is not used
+- pkg_dir, dist = self.create_dist()
++ dist = self.create_dist()[1]
+ cmd = build_py(dist)
+ cmd.compile = 1
+ cmd.optimize = 1
+diff --git a/lib-python/2.7/distutils/tests/test_install_lib.py b/lib-python/2.7/distutils/tests/test_install_lib.py
+index 0defbd6..446bdba 100644
+--- a/lib-python/2.7/distutils/tests/test_install_lib.py
++++ b/lib-python/2.7/distutils/tests/test_install_lib.py
+@@ -1,6 +1,7 @@
+ """Tests for distutils.command.install_data."""
+ import os
+ import sys
++import imp
+ import unittest
+
+ from distutils.command.install_lib import install_lib
+@@ -15,7 +16,7 @@ class InstallLibTestCase(support.TempdirManager,
+ unittest.TestCase):
+
+ def test_finalize_options(self):
+- pkg_dir, dist = self.create_dist()
++ dist = self.create_dist()[1]
+ cmd = install_lib(dist)
+
+ cmd.finalize_options()
+@@ -44,49 +45,62 @@ class InstallLibTestCase(support.TempdirManager,
+
+ @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile not enabled')
+ def test_byte_compile(self):
+- pkg_dir = self._setup_byte_compile()
+- if sys.flags.optimize < 1:
+- self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyc')))
+- else:
+- self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyo')))
++ project_dir, dist = self.create_dist()
++ os.chdir(project_dir)
++ cmd = install_lib(dist)
++ cmd.compile = cmd.optimize = 1
++
++ f = os.path.join(project_dir, 'foo.py')
++ self.write_file(f, '# python file')
++ cmd.byte_compile([f])
++ pyc_file = imp.cache_from_source('foo.py', debug_override=True)
++ pyo_file = imp.cache_from_source('foo.py', debug_override=False)
++ self.assertTrue(os.path.exists(pyc_file))
++ self.assertTrue(os.path.exists(pyo_file))
+
+ def test_get_outputs(self):
+- pkg_dir, dist = self.create_dist()
++ project_dir, dist = self.create_dist()
++ os.chdir(project_dir)
++ os.mkdir('spam')
+ cmd = install_lib(dist)
+
+ # setting up a dist environment
+ cmd.compile = cmd.optimize = 1
+- cmd.install_dir = pkg_dir
+- f = os.path.join(pkg_dir, 'foo.py')
+- self.write_file(f, '# python file')
+- cmd.distribution.py_modules = [pkg_dir]
++ cmd.install_dir = self.mkdtemp()
++ f = os.path.join(project_dir, 'spam', '__init__.py')
++ self.write_file(f, '# python package')
+ cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
+- cmd.distribution.packages = [pkg_dir]
++ cmd.distribution.packages = ['spam']
+ cmd.distribution.script_name = 'setup.py'
+
+- # get_output should return 4 elements
+- self.assertGreaterEqual(len(cmd.get_outputs()), 2)
++ # get_outputs should return 4 elements: spam/__init__.py, .pyc and
++ # .pyo, foo.import-tag-abiflags.so / foo.pyd
++ outputs = cmd.get_outputs()
++ self.assertEqual(len(outputs), 4, outputs)
+
+ def test_get_inputs(self):
+- pkg_dir, dist = self.create_dist()
++ project_dir, dist = self.create_dist()
++ os.chdir(project_dir)
++ os.mkdir('spam')
+ cmd = install_lib(dist)
+
+ # setting up a dist environment
+ cmd.compile = cmd.optimize = 1
+- cmd.install_dir = pkg_dir
+- f = os.path.join(pkg_dir, 'foo.py')
+- self.write_file(f, '# python file')
+- cmd.distribution.py_modules = [pkg_dir]
++ cmd.install_dir = self.mkdtemp()
++ f = os.path.join(project_dir, 'spam', '__init__.py')
++ self.write_file(f, '# python package')
+ cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
+- cmd.distribution.packages = [pkg_dir]
++ cmd.distribution.packages = ['spam']
+ cmd.distribution.script_name = 'setup.py'
+
+- # get_input should return 2 elements
+- self.assertEqual(len(cmd.get_inputs()), 2)
++ # get_inputs should return 2 elements: spam/__init__.py and
++ # foo.import-tag-abiflags.so / foo.pyd
++ inputs = cmd.get_inputs()
++ self.assertEqual(len(inputs), 2, inputs)
+
+ def test_dont_write_bytecode(self):
+ # makes sure byte_compile is not used
+- pkg_dir, dist = self.create_dist()
++ dist = self.create_dist()[1]
+ cmd = install_lib(dist)
+ cmd.compile = 1
+ cmd.optimize = 1
+diff --git a/lib-python/2.7/distutils/util.py b/lib-python/2.7/distutils/util.py
+index 2b4d784..5792df7 100644
+--- a/lib-python/2.7/distutils/util.py
++++ b/lib-python/2.7/distutils/util.py
+@@ -6,7 +6,11 @@ one of the other *util.py modules.
+
+ __revision__ = "$Id$"
+
+-import sys, os, string, re
++import os
++import re
++import imp
++import sys
++import string
+ from distutils.errors import DistutilsPlatformError
+ from distutils.dep_util import newer
+ from distutils.spawn import spawn
+@@ -331,9 +335,9 @@ def byte_compile (py_files,
+ verbose=1, dry_run=0,
+ direct=None):
+ """Byte-compile a collection of Python source files to either .pyc
+- or .pyo files in the same directory. 'py_files' is a list of files
+- to compile; any files that don't end in ".py" are silently skipped.
+- 'optimize' must be one of the following:
++ or .pyo files in a __pycache__ subdirectory. 'py_files' is a list
++ of files to compile; any files that don't end in ".py" are silently
++ skipped. 'optimize' must be one of the following:
+ 0 - don't optimize (generate .pyc)
+ 1 - normal optimization (like "python -O")
+ 2 - extra optimization (like "python -OO")
+@@ -445,7 +449,10 @@ byte_compile(files, optimize=%r, force=%r,
+ # Terminology from the py_compile module:
+ # cfile - byte-compiled file
+ # dfile - purported source filename (same as 'file' by default)
+- cfile = file + (__debug__ and "c" or "o")
++ if optimize >= 0:
++ cfile = imp.cache_from_source(file, debug_override=not optimize)
++ else:
++ cfile = imp.cache_from_source(file)
+ dfile = file
+ if prefix:
+ if file[:len(prefix)] != prefix:
diff --git a/debian/patches/pep3147-stdlib b/debian/patches/pep3147-stdlib
new file mode 100644
index 0000000..12c3076
--- /dev/null
+++ b/debian/patches/pep3147-stdlib
@@ -0,0 +1,1440 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:57 +0200
+Subject: PEP3147 changes to lib-python
+
+Backported from cpython's PEP3147 commit
+
+Origin: cpython: http://hg.python.org/cpython/rev/7b69e630d237
+Author: Barry Warsaw <barry@python.org>
+Author: Stefano Rivera <stefanor@debian.org>
+Last-Update: 2013-02-23
+---
+ lib-python/2.7/compileall.py | 67 ++++++++-----
+ lib-python/2.7/inspect.py | 1 +
+ lib-python/2.7/py_compile.py | 35 ++++---
+ lib-python/2.7/pydoc.py | 3 +-
+ lib-python/2.7/runpy.py | 2 +
+ lib-python/2.7/site.py | 13 ++-
+ lib-python/2.7/test/script_helper.py | 23 ++---
+ lib-python/2.7/test/test_cmd_line_script.py | 20 ++--
+ lib-python/2.7/test/test_compileall.py | 61 +++++++++++-
+ lib-python/2.7/test/test_imp.py | 142 ++++++++++++++++++++++++++++
+ lib-python/2.7/test/test_import.py | 65 +++++++------
+ lib-python/2.7/test/test_pkg.py | 20 ++--
+ lib-python/2.7/test/test_pkgimport.py | 20 ++--
+ lib-python/2.7/test/test_py_compile.py | 5 +-
+ lib-python/2.7/test/test_pydoc.py | 3 +-
+ lib-python/2.7/test/test_runpy.py | 23 +++--
+ lib-python/2.7/test/test_site.py | 47 ++++++---
+ lib-python/2.7/test/test_support.py | 48 ++++++++--
+ lib-python/2.7/test/test_traceback.py | 5 +-
+ lib-python/2.7/test/test_zipfile.py | 9 +-
+ lib-python/2.7/test/test_zipimport.py | 9 +-
+ lib-python/2.7/zipfile.py | 43 ++++++---
+ 22 files changed, 499 insertions(+), 165 deletions(-)
+
+diff --git a/lib-python/2.7/compileall.py b/lib-python/2.7/compileall.py
+index 5cfa8be..1418be2 100644
+--- a/lib-python/2.7/compileall.py
++++ b/lib-python/2.7/compileall.py
+@@ -11,6 +11,7 @@ packages -- for now, you'll have to deal with packages separately.)
+ See module py_compile for details of the actual byte-compilation.
+ """
+ import os
++import errno
+ import sys
+ import py_compile
+ import struct
+@@ -19,7 +20,7 @@ import imp
+ __all__ = ["compile_dir","compile_file","compile_path"]
+
+ def compile_dir(dir, maxlevels=10, ddir=None,
+- force=0, rx=None, quiet=0):
++ force=False, rx=None, quiet=False, legacy=False):
+ """Byte-compile all modules in the given directory tree.
+
+ Arguments (only dir is required):
+@@ -28,8 +29,9 @@ def compile_dir(dir, maxlevels=10, ddir=None,
+ maxlevels: maximum recursion level (default 10)
+ ddir: the directory that will be prepended to the path to the
+ file as it is compiled into each byte-code file.
+- force: if 1, force compilation, even if timestamps are up-to-date
+- quiet: if 1, be quiet during compilation
++ force: if True, force compilation, even if timestamps are up-to-date
++ quiet: if True, be quiet during compilation
++ legacy: if True, produce legacy pyc paths instead of PEP 3147 paths
+ """
+ if not quiet:
+ print 'Listing', dir, '...'
+@@ -47,18 +49,20 @@ def compile_dir(dir, maxlevels=10, ddir=None,
+ else:
+ dfile = None
+ if not os.path.isdir(fullname):
+- if not compile_file(fullname, ddir, force, rx, quiet):
++ if not compile_file(fullname, ddir, force, rx, quiet, legacy):
+ success = 0
+ elif maxlevels > 0 and \
+ name != os.curdir and name != os.pardir and \
+ os.path.isdir(fullname) and \
+- not os.path.islink(fullname):
++ not os.path.islink(fullname) and \
++ name != '__pycache__':
+ if not compile_dir(fullname, maxlevels - 1, dfile, force, rx,
+- quiet):
++ quiet, legacy):
+ success = 0
+ return success
+
+-def compile_file(fullname, ddir=None, force=0, rx=None, quiet=0):
++def compile_file(fullname, ddir=None, force=0, rx=None, quiet=False,
++ legacy=False):
+ """Byte-compile one file.
+
+ Arguments (only fullname is required):
+@@ -66,8 +70,9 @@ def compile_file(fullname, ddir=None, force=0, rx=None, quiet=0):
+ fullname: the file to byte-compile
+ ddir: if given, the directory name compiled in to the
+ byte-code file.
+- force: if 1, force compilation, even if timestamps are up-to-date
+- quiet: if 1, be quiet during compilation
++ force: if True, force compilation, even if timestamps are up-to-date
++ quiet: if True, be quiet during compilation
++ legacy: if True, produce legacy pyc paths instead of PEP 3147 paths
+ """
+ success = 1
+ name = os.path.basename(fullname)
+@@ -82,11 +87,20 @@ def compile_file(fullname, ddir=None, force=0, rx=None, quiet=0):
+ if os.path.isfile(fullname):
+ head, tail = name[:-3], name[-3:]
+ if tail == '.py':
++ if legacy:
++ cfile = fullname + ('c' if __debug__ else 'o')
++ else:
++ cfile = imp.cache_from_source(fullname)
++ cache_dir = os.path.dirname(cfile)
++ try:
++ os.mkdir(cache_dir)
++ except OSError, error:
++ if error.errno != errno.EEXIST:
++ raise
+ if not force:
+ try:
+ mtime = int(os.stat(fullname).st_mtime)
+ expect = struct.pack('<4sl', imp.get_magic(), mtime)
+- cfile = fullname + (__debug__ and 'c' or 'o')
+ with open(cfile, 'rb') as chandle:
+ actual = chandle.read(8)
+ if expect == actual:
+@@ -96,7 +110,7 @@ def compile_file(fullname, ddir=None, force=0, rx=None, quiet=0):
+ if not quiet:
+ print 'Compiling', fullname, '...'
+ try:
+- ok = py_compile.compile(fullname, None, dfile, True)
++ ok = py_compile.compile(fullname, cfile, dfile, True)
+ except py_compile.PyCompileError,err:
+ if quiet:
+ print 'Compiling', fullname, '...'
+@@ -110,15 +124,17 @@ def compile_file(fullname, ddir=None, force=0, rx=None, quiet=0):
+ success = 0
+ return success
+
+-def compile_path(skip_curdir=1, maxlevels=0, force=0, quiet=0):
++def compile_path(skip_curdir=1, maxlevels=0, force=False, quiet=False,
++ legacy=False):
+ """Byte-compile all module on sys.path.
+
+ Arguments (all optional):
+
+ skip_curdir: if true, skip current directory (default true)
+ maxlevels: max recursion level (default 0)
+- force: as for compile_dir() (default 0)
+- quiet: as for compile_dir() (default 0)
++ force: as for compile_dir() (default False)
++ quiet: as for compile_dir() (default False)
++ legacy: as for compile_dir() (default False)
+ """
+ success = 1
+ for dir in sys.path:
+@@ -126,7 +142,8 @@ def compile_path(skip_curdir=1, maxlevels=0, force=0, quiet=0):
+ print 'Skipping current directory'
+ else:
+ success = success and compile_dir(dir, maxlevels, None,
+- force, quiet=quiet)
++ force, quiet=quiet,
++ legacy=legacy)
+ return success
+
+ def expand_args(args, flist):
+@@ -152,7 +169,7 @@ def main():
+ """Script main program."""
+ import getopt
+ try:
+- opts, args = getopt.getopt(sys.argv[1:], 'lfqd:x:i:')
++ opts, args = getopt.getopt(sys.argv[1:], 'lfqd:x:i:b')
+ except getopt.error, msg:
+ print msg
+ print "usage: python compileall.py [-l] [-f] [-q] [-d destdir] " \
+@@ -177,23 +194,26 @@ def main():
+ print "-i file: add all the files and directories listed in file to " \
+ "the list considered for"
+ print ' compilation; if "-", names are read from stdin'
++ print "-b: Produce legacy byte-compile file paths"
+
+ sys.exit(2)
+ maxlevels = 10
+ ddir = None
+- force = 0
+- quiet = 0
++ force = False
++ quiet = False
+ rx = None
+ flist = None
++ legacy = False
+ for o, a in opts:
+ if o == '-l': maxlevels = 0
+ if o == '-d': ddir = a
+- if o == '-f': force = 1
+- if o == '-q': quiet = 1
++ if o == '-f': force = True
++ if o == '-q': quiet = True
+ if o == '-x':
+ import re
+ rx = re.compile(a)
+ if o == '-i': flist = a
++ if o == '-b': legacy = True
+ if ddir:
+ if len(args) != 1 and not os.path.isdir(args[0]):
+ print "-d destdir require exactly one directory argument"
+@@ -210,13 +230,14 @@ def main():
+ for arg in args:
+ if os.path.isdir(arg):
+ if not compile_dir(arg, maxlevels, ddir,
+- force, rx, quiet):
++ force, rx, quiet, legacy):
+ success = 0
+ else:
+- if not compile_file(arg, ddir, force, rx, quiet):
++ if not compile_file(arg, ddir, force, rx,
++ quiet, legacy):
+ success = 0
+ else:
+- success = compile_path()
++ success = compile_path(legacy=legacy)
+ except KeyboardInterrupt:
+ print "\n[interrupted]"
+ success = 0
+diff --git a/lib-python/2.7/inspect.py b/lib-python/2.7/inspect.py
+index 4335258..32d3ba3 100644
+--- a/lib-python/2.7/inspect.py
++++ b/lib-python/2.7/inspect.py
+@@ -56,6 +56,7 @@ def ismodule(object):
+ """Return true if the object is a module.
+
+ Module objects provide these attributes:
++ __cached__ pathname to byte compiled file
+ __doc__ documentation string
+ __file__ filename (missing for built-in modules)"""
+ return isinstance(object, types.ModuleType)
+diff --git a/lib-python/2.7/py_compile.py b/lib-python/2.7/py_compile.py
+index 8334ed9..9d0ad16 100644
+--- a/lib-python/2.7/py_compile.py
++++ b/lib-python/2.7/py_compile.py
+@@ -4,6 +4,7 @@ This module has intimate knowledge of the format of .pyc files.
+ """
+
+ import __builtin__
++import errno
+ import imp
+ import marshal
+ import os
+@@ -71,20 +72,18 @@ def wr_long(f, x):
+ def compile(file, cfile=None, dfile=None, doraise=False):
+ """Byte-compile one Python source file to Python bytecode.
+
+- Arguments:
+-
+- file: source filename
+- cfile: target filename; defaults to source with 'c' or 'o' appended
+- ('c' normally, 'o' in optimizing mode, giving .pyc or .pyo)
+- dfile: purported filename; defaults to source (this is the filename
+- that will show up in error messages)
+- doraise: flag indicating whether or not an exception should be
+- raised when a compile error is found. If an exception
+- occurs and this flag is set to False, a string
+- indicating the nature of the exception will be printed,
+- and the function will return to the caller. If an
+- exception occurs and this flag is set to True, a
+- PyCompileError exception will be raised.
++ :param file: The source file name.
++ :param cfile: The target byte compiled file name. When not given, this
++ defaults to the PEP 3147 location.
++ :param dfile: Purported file name, i.e. the file name that shows up in
++ error messages. Defaults to the source file name.
++ :param doraise: Flag indicating whether or not an exception should be
++ raised when a compile error is found. If an exception occurs and this
++ flag is set to False, a string indicating the nature of the exception
++ will be printed, and the function will return to the caller. If an
++ exception occurs and this flag is set to True, a PyCompileError
++ exception will be raised.
++ :return: Path to the resulting byte compiled file.
+
+ Note that it isn't necessary to byte-compile Python modules for
+ execution efficiency -- Python itself byte-compiles a module when
+@@ -119,7 +118,12 @@ def compile(file, cfile=None, dfile=None, doraise=False):
+ sys.stderr.write(py_exc.msg + '\n')
+ return
+ if cfile is None:
+- cfile = file + (__debug__ and 'c' or 'o')
++ cfile = imp.cache_from_source(file)
++ try:
++ os.mkdir(os.path.dirname(cfile))
++ except OSError, error:
++ if error.errno != errno.EEXIST:
++ raise
+ with open(cfile, 'wb') as fc:
+ fc.write('\0\0\0\0')
+ wr_long(fc, timestamp)
+@@ -127,6 +131,7 @@ def compile(file, cfile=None, dfile=None, doraise=False):
+ fc.flush()
+ fc.seek(0, 0)
+ fc.write(MAGIC)
++ return cfile
+
+ def main(args=None):
+ """Compile several source files.
+diff --git a/lib-python/2.7/pydoc.py b/lib-python/2.7/pydoc.py
+index de9ce1c..14ff9bb 100755
+--- a/lib-python/2.7/pydoc.py
++++ b/lib-python/2.7/pydoc.py
+@@ -162,7 +162,8 @@ def visiblename(name, all=None, obj=None):
+ """Decide whether to show documentation on a variable."""
+ # Certain special names are redundant.
+ _hidden_names = ('__builtins__', '__doc__', '__file__', '__path__',
+- '__module__', '__name__', '__slots__', '__package__')
++ '__module__', '__name__', '__slots__', '__package__',
++ '__cached__')
+ if name in _hidden_names: return 0
+ # Private names are hidden, but special names are displayed.
+ if name.startswith('__') and name.endswith('__'): return 1
+diff --git a/lib-python/2.7/runpy.py b/lib-python/2.7/runpy.py
+index ad4d077..9c436bb 100644
+--- a/lib-python/2.7/runpy.py
++++ b/lib-python/2.7/runpy.py
+@@ -67,6 +67,7 @@ def _run_code(code, run_globals, init_globals=None,
+ run_globals.update(init_globals)
+ run_globals.update(__name__ = mod_name,
+ __file__ = mod_fname,
++ __cached__ = None,
+ __loader__ = mod_loader,
+ __package__ = pkg_name)
+ exec code in run_globals
+@@ -154,6 +155,7 @@ def _run_module_as_main(mod_name, alter_argv=True):
+ At the very least, these variables in __main__ will be overwritten:
+ __name__
+ __file__
++ __cached__
+ __loader__
+ __package__
+ """
+diff --git a/lib-python/2.7/site.py b/lib-python/2.7/site.py
+index 1a42691..37de98e 100644
+--- a/lib-python/2.7/site.py
++++ b/lib-python/2.7/site.py
+@@ -85,8 +85,8 @@ def makepath(*paths):
+ return dir, os.path.normcase(dir)
+
+
+-def abs__file__():
+- """Set all module' __file__ attribute to an absolute path"""
++def abs_paths():
++ """Set all module __file__ and __cached__ attributes to an absolute path"""
+ for m in sys.modules.values():
+ if hasattr(m, '__loader__'):
+ continue # don't mess with a PEP 302-supplied __file__
+@@ -97,6 +97,13 @@ def abs__file__():
+ m.__file__ = new
+ except (AttributeError, OSError):
+ pass
++ try:
++ prev = m.__cached__
++ new = os.path.abspath(m.__cached__)
++ if prev != new:
++ m.__cached__ = new
++ except (AttributeError, OSError):
++ pass
+
+
+ def removeduppaths():
+@@ -543,7 +550,7 @@ def main():
+ global ENABLE_USER_SITE
+
+ import_builtin_stuff()
+- abs__file__()
++ abs_paths()
+ known_paths = removeduppaths()
+ if ENABLE_USER_SITE is None:
+ ENABLE_USER_SITE = check_enableusersite()
+diff --git a/lib-python/2.7/test/script_helper.py b/lib-python/2.7/test/script_helper.py
+index 6be47bd..28a73dd 100644
+--- a/lib-python/2.7/test/script_helper.py
++++ b/lib-python/2.7/test/script_helper.py
+@@ -20,6 +20,9 @@ except ImportError:
+
+ from test.test_support import strip_python_stderr
+
++from imp import source_from_cache
++from test.test_support import make_legacy_pyc
++
+ # Executing the interpreter in a subprocess
+ def _assert_python(expected_success, *args, **env_vars):
+ cmd_line = [sys.executable]
+@@ -111,20 +114,18 @@ def make_script(script_dir, script_basename, source):
+ script_file.close()
+ return script_name
+
+-def compile_script(script_name):
+- py_compile.compile(script_name, doraise=True)
+- if __debug__:
+- compiled_name = script_name + 'c'
+- else:
+- compiled_name = script_name + 'o'
+- return compiled_name
+-
+ def make_zip_script(zip_dir, zip_basename, script_name, name_in_zip=None):
+ zip_filename = zip_basename+os.extsep+'zip'
+ zip_name = os.path.join(zip_dir, zip_filename)
+ zip_file = zipfile.ZipFile(zip_name, 'w')
+ if name_in_zip is None:
+- name_in_zip = os.path.basename(script_name)
++ parts = script_name.split(os.sep)
++ if len(parts) >= 2 and parts[-2] == '__pycache__':
++ legacy_pyc = make_legacy_pyc(source_from_cache(script_name))
++ name_in_zip = os.path.basename(legacy_pyc)
++ script_name = legacy_pyc
++ else:
++ name_in_zip = os.path.basename(script_name)
+ zip_file.write(script_name, name_in_zip)
+ zip_file.close()
+ #if test.test_support.verbose:
+@@ -147,8 +148,8 @@ def make_zip_pkg(zip_dir, zip_basename, pkg_name, script_basename,
+ script_name = make_script(zip_dir, script_basename, source)
+ unlink.append(script_name)
+ if compiled:
+- init_name = compile_script(init_name)
+- script_name = compile_script(script_name)
++ init_name = py_compile(init_name, doraise=True)
++ script_name = py_compile(script_name, doraise=True)
+ unlink.extend((init_name, script_name))
+ pkg_names = [os.sep.join([pkg_name]*i) for i in range(1, depth+1)]
+ script_name_in_zip = os.path.join(pkg_names[-1], os.path.basename(script_name))
+diff --git a/lib-python/2.7/test/test_cmd_line_script.py b/lib-python/2.7/test/test_cmd_line_script.py
+index 2e12ff2..5895285 100644
+--- a/lib-python/2.7/test/test_cmd_line_script.py
++++ b/lib-python/2.7/test/test_cmd_line_script.py
+@@ -4,9 +4,10 @@ import contextlib
+ import unittest
+ import os
+ import os.path
++import py_compile
+ import test.test_support
+ from test.script_helper import (run_python,
+- temp_dir, make_script, compile_script,
++ temp_dir, make_script,
+ assert_python_failure, make_pkg,
+ make_zip_script, make_zip_pkg)
+
+@@ -33,6 +34,7 @@ assertEqual(result, ['Top level assignment', 'Lower level reference'])
+ # Check population of magic variables
+ assertEqual(__name__, '__main__')
+ print '__file__==%r' % __file__
++assertEqual(__cached__, None)
+ print '__package__==%r' % __package__
+ # Check the sys module
+ import sys
+@@ -106,7 +108,7 @@ class CmdLineTest(unittest.TestCase):
+ def test_script_compiled(self):
+ with temp_dir() as script_dir:
+ script_name = _make_test_script(script_dir, 'script')
+- compiled_name = compile_script(script_name)
++ compiled_name = py_compile.compile(script_name, doraise=True)
+ os.remove(script_name)
+ self._check_script(compiled_name, compiled_name, compiled_name, None)
+
+@@ -120,9 +122,10 @@ class CmdLineTest(unittest.TestCase):
+ raise unittest.SkipTest("pypy won't load lone .pyc files")
+ with temp_dir() as script_dir:
+ script_name = _make_test_script(script_dir, '__main__')
+- compiled_name = compile_script(script_name)
++ compiled_name = py_compile.compile(script_name, doraise=True)
+ os.remove(script_name)
+- self._check_script(script_dir, compiled_name, script_dir, '')
++ pyc_file = test.test_support.make_legacy_pyc(script_name)
++ self._check_script(script_dir, pyc_file, script_dir, '')
+
+ def test_directory_error(self):
+ with temp_dir() as script_dir:
+@@ -138,7 +141,7 @@ class CmdLineTest(unittest.TestCase):
+ def test_zipfile_compiled(self):
+ with temp_dir() as script_dir:
+ script_name = _make_test_script(script_dir, '__main__')
+- compiled_name = compile_script(script_name)
++ compiled_name = py_compile.compile(script_name, doraise=True)
+ zip_name, run_name = make_zip_script(script_dir, 'test_zip', compiled_name)
+ self._check_script(zip_name, run_name, zip_name, '')
+
+@@ -185,11 +188,12 @@ class CmdLineTest(unittest.TestCase):
+ pkg_dir = os.path.join(script_dir, 'test_pkg')
+ make_pkg(pkg_dir)
+ script_name = _make_test_script(pkg_dir, '__main__')
+- compiled_name = compile_script(script_name)
++ compiled_name = py_compile.compile(script_name, doraise=True)
+ os.remove(script_name)
++ pyc_file = test.test_support.make_legacy_pyc(script_name)
+ launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg')
+- self._check_script(launch_name, compiled_name,
+- compiled_name, 'test_pkg')
++ self._check_script(launch_name, pyc_file,
++ pyc_file, 'test_pkg')
+
+ def test_package_error(self):
+ with temp_dir() as script_dir:
+diff --git a/lib-python/2.7/test/test_compileall.py b/lib-python/2.7/test/test_compileall.py
+index d3a26db..7fd44c5 100644
+--- a/lib-python/2.7/test/test_compileall.py
++++ b/lib-python/2.7/test/test_compileall.py
+@@ -4,6 +4,8 @@ import os
+ import py_compile
+ import shutil
+ import struct
++import sys
++import subprocess
+ import tempfile
+ from test import test_support
+ import unittest
+@@ -14,11 +16,11 @@ class CompileallTests(unittest.TestCase):
+ def setUp(self):
+ self.directory = tempfile.mkdtemp()
+ self.source_path = os.path.join(self.directory, '_test.py')
+- self.bc_path = self.source_path + ('c' if __debug__ else 'o')
++ self.bc_path = imp.cache_from_source(self.source_path)
+ with open(self.source_path, 'w') as file:
+ file.write('x = 123\n')
+ self.source_path2 = os.path.join(self.directory, '_test2.py')
+- self.bc_path2 = self.source_path2 + ('c' if __debug__ else 'o')
++ self.bc_path2 = imp.cache_from_source(self.source_path2)
+ shutil.copyfile(self.source_path, self.source_path2)
+
+ def tearDown(self):
+@@ -71,8 +73,61 @@ class CompileallTests(unittest.TestCase):
+ os.unlink(self.bc_path)
+ os.unlink(self.bc_path2)
+
++class CommandLineTests(unittest.TestCase):
++ """Test some aspects of compileall's CLI."""
++
++ def setUp(self):
++ self.addCleanup(self._cleanup)
++ self.directory = tempfile.mkdtemp()
++ self.pkgdir = os.path.join(self.directory, 'foo')
++ os.mkdir(self.pkgdir)
++ # Touch the __init__.py and a package module.
++ with open(os.path.join(self.pkgdir, '__init__.py'), 'w'):
++ pass
++ with open(os.path.join(self.pkgdir, 'bar.py'), 'w'):
++ pass
++ sys.path.insert(0, self.directory)
++
++ def _cleanup(self):
++ test_support.rmtree(self.directory)
++ assert sys.path[0] == self.directory, 'Missing path'
++ del sys.path[0]
++
++ def test_pep3147_paths(self):
++ # Ensure that the default behavior of compileall's CLI is to create
++ # PEP 3147 pyc/pyo files.
++ retcode = subprocess.call(
++ (sys.executable, '-m', 'compileall', '-q', self.pkgdir))
++ self.assertEqual(retcode, 0)
++ # Verify the __pycache__ directory contents.
++ cachedir = os.path.join(self.pkgdir, '__pycache__')
++ self.assertTrue(os.path.exists(cachedir))
++ ext = ('pyc' if __debug__ else 'pyo')
++ expected = sorted(base.format(imp.get_tag(), ext) for base in
++ ('__init__.{}.{}', 'bar.{}.{}'))
++ self.assertEqual(sorted(os.listdir(cachedir)), expected)
++ # Make sure there are no .pyc files in the source directory.
++ self.assertFalse([pyc_file for pyc_file in os.listdir(self.pkgdir)
++ if pyc_file.endswith(ext)])
++
++ def test_legacy_paths(self):
++ # Ensure that with the proper switch, compileall leaves legacy
++ # pyc/pyo files, and no __pycache__ directory.
++ retcode = subprocess.call(
++ (sys.executable, '-m', 'compileall', '-b', '-q', self.pkgdir))
++ self.assertEqual(retcode, 0)
++ # Verify the __pycache__ directory contents.
++ cachedir = os.path.join(self.pkgdir, '__pycache__')
++ self.assertFalse(os.path.exists(cachedir))
++ ext = ('pyc' if __debug__ else 'pyo')
++ expected = [base.format(ext) for base in ('__init__.{}', 'bar.{}')]
++ expected.extend(['__init__.py', 'bar.py'])
++ expected.sort()
++ self.assertEqual(sorted(os.listdir(self.pkgdir)), expected)
++
++
+ def test_main():
+- test_support.run_unittest(CompileallTests)
++ test_support.run_unittest(CommandLineTests, CompileallTests)
+
+
+ if __name__ == "__main__":
+diff --git a/lib-python/2.7/test/test_imp.py b/lib-python/2.7/test/test_imp.py
+index 1bdc47a..341d36b 100644
+--- a/lib-python/2.7/test/test_imp.py
++++ b/lib-python/2.7/test/test_imp.py
+@@ -1,4 +1,7 @@
+ import imp
++import os
++import shutil
++import sys
+ import unittest
+ from test import test_support
+
+@@ -70,8 +73,147 @@ class ReloadTests(unittest.TestCase):
+ imp.reload(marshal)
+
+
++class PEP3147Tests(unittest.TestCase):
++ """Tests of PEP 3147."""
++
++ tag = imp.get_tag()
++
++ def test_cache_from_source(self):
++ # Given the path to a .py file, return the path to its PEP 3147
++ # defined .pyc file (i.e. under __pycache__).
++ self.assertEqual(
++ imp.cache_from_source('/foo/bar/baz/qux.py', True),
++ '/foo/bar/baz/__pycache__/qux.{}.pyc'.format(self.tag))
++
++ def test_cache_from_source_optimized(self):
++ # Given the path to a .py file, return the path to its PEP 3147
++ # defined .pyo file (i.e. under __pycache__).
++ if test_support.check_impl_detail(pypy=True):
++ # PyPy doesn't support .pyo, so we expect .pyc
++ extension = 'pyc'
++ else:
++ extension = 'pyo'
++ self.assertEqual(
++ imp.cache_from_source('/foo/bar/baz/qux.py', False),
++ '/foo/bar/baz/__pycache__/qux.{}.{}'.format(self.tag, extension))
++
++ def test_cache_from_source_cwd(self):
++ self.assertEqual(imp.cache_from_source('foo.py', True),
++ os.sep.join(('__pycache__',
++ 'foo.{}.pyc'.format(self.tag))))
++
++ def test_cache_from_source_override(self):
++ # When debug_override is not None, it can be any true-ish or false-ish
++ # value.
++ if test_support.check_impl_detail(pypy=True):
++ # PyPy doesn't support .pyo, so we expect .pyc
++ extension = 'pyc'
++ else:
++ extension = 'pyo'
++ self.assertEqual(
++ imp.cache_from_source('/foo/bar/baz.py', []),
++ '/foo/bar/__pycache__/baz.{}.pyc'.format(self.tag))
++ self.assertEqual(
++ imp.cache_from_source('/foo/bar/baz.py', [17]),
++ '/foo/bar/__pycache__/baz.{}.{}'.format(self.tag, extension))
++ # However if the bool-ishness can't be determined, the exception
++ # propagates.
++ class Bearish:
++ def __bool__(self): raise RuntimeError
++
++ if test_support.check_impl_detail(pypy=True):
++ # Pypy doesn't even determine bool-ishness
++ try:
++ imp.cache_from_source('/foo/bar/baz.py', Bearish())
++ except RuntimeError:
++ pass
++ else:
++ self.assertRaises(
++ RuntimeError,
++ imp.cache_from_source, '/foo/bar/baz.py', Bearish())
++
++ @unittest.skipIf(os.altsep is None,
++ 'test meaningful only where os.altsep is defined')
++ def test_altsep_cache_from_source(self):
++ # Windows path and PEP 3147.
++ self.assertEqual(
++ imp.cache_from_source('\\foo\\bar\\baz\\qux.py', True),
++ '\\foo\\bar\\baz\\__pycache__\\qux.{}.pyc'.format(self.tag))
++
++ @unittest.skipIf(os.altsep is None,
++ 'test meaningful only where os.altsep is defined')
++ def test_altsep_and_sep_cache_from_source(self):
++ # Windows path and PEP 3147 where altsep is right of sep.
++ self.assertEqual(
++ imp.cache_from_source('\\foo\\bar/baz\\qux.py', True),
++ '\\foo\\bar/baz\\__pycache__\\qux.{}.pyc'.format(self.tag))
++
++ @unittest.skipIf(os.altsep is None,
++ 'test meaningful only where os.altsep is defined')
++ def test_sep_altsep_and_sep_cache_from_source(self):
++ # Windows path and PEP 3147 where sep is right of altsep.
++ self.assertEqual(
++ imp.cache_from_source('\\foo\\bar\\baz/qux.py', True),
++ '\\foo\\bar\\baz/__pycache__/qux.{}.pyc'.format(self.tag))
++
++ def test_source_from_cache(self):
++ # Given the path to a PEP 3147 defined .pyc file, return the path to
++ # its source. This tests the good path.
++ self.assertEqual(imp.source_from_cache(
++ '/foo/bar/baz/__pycache__/qux.{}.pyc'.format(self.tag)),
++ '/foo/bar/baz/qux.py')
++
++ def test_source_from_cache_bad_path(self):
++ # When the path to a pyc file is not in PEP 3147 format, a ValueError
++ # is raised.
++ self.assertRaises(
++ ValueError, imp.source_from_cache, '/foo/bar/bazqux.pyc')
++
++ def test_source_from_cache_no_slash(self):
++ # No slashes at all in path -> ValueError
++ self.assertRaises(
++ ValueError, imp.source_from_cache, 'foo.cpython-32.pyc')
++
++ def test_source_from_cache_too_few_dots(self):
++ # Too few dots in final path component -> ValueError
++ self.assertRaises(
++ ValueError, imp.source_from_cache, '__pycache__/foo.pyc')
++
++ def test_source_from_cache_too_many_dots(self):
++ # Too many dots in final path component -> ValueError
++ self.assertRaises(
++ ValueError, imp.source_from_cache,
++ '__pycache__/foo.cpython-32.foo.pyc')
++
++ def test_source_from_cache_no__pycache__(self):
++ # Another problem with the path -> ValueError
++ self.assertRaises(
++ ValueError, imp.source_from_cache,
++ '/foo/bar/foo.cpython-32.foo.pyc')
++
++ def test_package___file__(self):
++ # Test that a package's __file__ points to the right source directory.
++ os.mkdir('pep3147')
++ sys.path.insert(0, os.curdir)
++ def cleanup():
++ if sys.path[0] == os.curdir:
++ del sys.path[0]
++ shutil.rmtree('pep3147')
++ self.addCleanup(cleanup)
++ # Touch the __init__.py file.
++ with open('pep3147/__init__.py', 'w'):
++ pass
++ m = __import__('pep3147')
++ # Ensure we load the pyc file.
++ test_support.forget('pep3147')
++ m = __import__('pep3147')
++ self.assertEqual(m.__file__,
++ os.sep.join(('.', 'pep3147', '__init__.py')))
++
++
+ def test_main():
+ tests = [
++ PEP3147Tests,
+ ReloadTests,
+ LockTests,
+ ]
+diff --git a/lib-python/2.7/test/test_import.py b/lib-python/2.7/test/test_import.py
+index 716f8e0..0618068 100644
+--- a/lib-python/2.7/test/test_import.py
++++ b/lib-python/2.7/test/test_import.py
+@@ -13,7 +13,8 @@ import shutil
+
+ from test.test_support import (unlink, TESTFN, unload, run_unittest, rmtree,
+ is_jython, check_warnings, EnvironmentVarGuard,
+- impl_detail, check_impl_detail)
++ impl_detail, check_impl_detail, forget,
++ make_legacy_pyc, temp_umask)
+ from test import symlink_support
+ from test import script_helper
+
+@@ -35,6 +36,11 @@ def chmod_files(name):
+ def remove_files(name):
+ for f in _files(name):
+ unlink(f)
++ try:
++ shutil.rmtree('__pycache__')
++ except OSError, error:
++ if error.errno != errno.ENOENT:
++ raise
+
+
+ class ImportTests(unittest.TestCase):
+@@ -95,9 +101,9 @@ class ImportTests(unittest.TestCase):
+ except ImportError, err:
+ self.fail("import from .pyc/.pyo failed: %s" % err)
+ finally:
++ forget(TESTFN)
+ unlink(pyc)
+ unlink(pyo)
+- unload(TESTFN)
+
+ sys.path.insert(0, os.curdir)
+ try:
+@@ -115,28 +121,26 @@ class ImportTests(unittest.TestCase):
+ def test_execute_bit_not_copied(self):
+ # Issue 6070: under posix .pyc files got their execute bit set if
+ # the .py file had the execute bit set, but they aren't executable.
+- oldmask = os.umask(022)
+- sys.path.insert(0, os.curdir)
+- try:
+- fname = TESTFN + os.extsep + "py"
+- f = open(fname, 'w').close()
+- os.chmod(fname, (stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH |
+- stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH))
+- __import__(TESTFN)
+- fn = fname + 'c'
+- if not os.path.exists(fn):
+- fn = fname + 'o'
++ with temp_umask(022):
++ sys.path.insert(0, os.curdir)
++ try:
++ fname = TESTFN + os.extsep + "py"
++ f = open(fname, 'w').close()
++ os.chmod(fname, (stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH |
++ stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH))
++ __import__(TESTFN)
++ fn = imp.cache_from_source(fname)
+ if not os.path.exists(fn):
+ self.fail("__import__ did not result in creation of "
+ "either a .pyc or .pyo file")
+- s = os.stat(fn)
+- self.assertEqual(stat.S_IMODE(s.st_mode),
+- stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH)
+- finally:
+- os.umask(oldmask)
+- remove_files(TESTFN)
+- unload(TESTFN)
+- del sys.path[0]
++ s = os.stat(fn)
++ self.assertEqual(
++ stat.S_IMODE(s.st_mode),
++ stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH)
++ finally:
++ del sys.path[0]
++ remove_files(TESTFN)
++ unload(TESTFN)
+
+ @unittest.skipIf(sys.dont_write_bytecode,
+ "test meaningful only when writing bytecode")
+@@ -205,12 +209,14 @@ class ImportTests(unittest.TestCase):
+ f.write('"",\n')
+ f.write(']')
+
+- # Compile & remove .py file, we only need .pyc (or .pyo).
++ # Compile & remove .py file, we only need .pyc (or .pyo), but that
++ # must be relocated to the PEP 3147 bytecode-only location.
+ with open(filename, 'r') as f:
+ py_compile.compile(filename)
+ if check_impl_detail(pypy=False):
+ # pypy refuses to import a .pyc if the .py does not exist
+ unlink(filename)
++ make_legacy_pyc(filename)
+
+ # Need to be able to load from current dir.
+ sys.path.append('')
+@@ -345,7 +351,7 @@ class ImportTests(unittest.TestCase):
+ sys.path.insert(0, os.curdir)
+ try:
+ source = TESTFN + ".py"
+- compiled = source + ('c' if __debug__ else 'o')
++ compiled = imp.cache_from_source(source)
+ with open(source, 'w') as f:
+ pass
+ try:
+@@ -440,6 +446,7 @@ class PycRewritingTests(unittest.TestCase):
+ import sys
+ code_filename = sys._getframe().f_code.co_filename
+ module_filename = __file__
++module_pyc_filename = __cached__
+ constant = 1
+ def func():
+ pass
+@@ -447,7 +454,7 @@ func_filename = func.func_code.co_filename
+ """
+ dir_name = os.path.abspath(TESTFN)
+ file_name = os.path.join(dir_name, module_name) + os.extsep + "py"
+- compiled_name = file_name + ("c" if __debug__ else "o")
++ compiled_name = imp.cache_from_source(file_name)
+
+ def setUp(self):
+ self.sys_path = sys.path[:]
+@@ -475,19 +482,22 @@ func_filename = func.func_code.co_filename
+ def test_basics(self):
+ mod = self.import_module()
+ self.assertEqual(mod.module_filename, self.file_name)
++ self.assertEqual(mod.module_pyc_filename, self.compiled_name)
+ self.assertEqual(mod.code_filename, self.file_name)
+ self.assertEqual(mod.func_filename, self.file_name)
+ del sys.modules[self.module_name]
+ mod = self.import_module()
++ self.assertEqual(mod.module_filename, self.file_name)
+ if not sys.dont_write_bytecode:
+- self.assertEqual(mod.module_filename, self.compiled_name)
++ self.assertEqual(mod.module_pyc_filename, self.compiled_name)
+ self.assertEqual(mod.code_filename, self.file_name)
+ self.assertEqual(mod.func_filename, self.file_name)
+
+ def test_incorrect_code_name(self):
+ py_compile.compile(self.file_name, dfile="another_module.py")
+ mod = self.import_module()
+- self.assertEqual(mod.module_filename, self.compiled_name)
++ self.assertEqual(mod.module_filename, self.file_name)
++ self.assertEqual(mod.module_pyc_filename, self.compiled_name)
+ self.assertEqual(mod.code_filename, self.file_name)
+ self.assertEqual(mod.func_filename, self.file_name)
+
+@@ -496,8 +506,9 @@ func_filename = func.func_code.co_filename
+ target = "another_module.py"
+ py_compile.compile(self.file_name, dfile=target)
+ os.remove(self.file_name)
++ pyc_file = make_legacy_pyc(self.file_name)
+ mod = self.import_module()
+- self.assertEqual(mod.module_filename, self.compiled_name)
++ self.assertEqual(mod.module_filename, pyc_file)
+ self.assertEqual(mod.code_filename, target)
+ self.assertEqual(mod.func_filename, target)
+
+diff --git a/lib-python/2.7/test/test_pkg.py b/lib-python/2.7/test/test_pkg.py
+index 5f1659b..853069a 100644
+--- a/lib-python/2.7/test/test_pkg.py
++++ b/lib-python/2.7/test/test_pkg.py
+@@ -194,14 +194,14 @@ class Test(unittest.TestCase):
+
+ import t5
+ self.assertEqual(fixdir(dir(t5)),
+- ['__doc__', '__file__', '__name__',
++ ['__cached__', '__doc__', '__file__', '__name__',
+ '__package__', '__path__', 'foo', 'string', 't5'])
+ self.assertEqual(fixdir(dir(t5.foo)),
+- ['__doc__', '__file__', '__name__', '__package__',
+- 'string'])
++ ['__cached__', '__doc__', '__file__', '__name__',
++ '__package__', 'string'])
+ self.assertEqual(fixdir(dir(t5.string)),
+- ['__doc__', '__file__', '__name__','__package__',
+- 'spam'])
++ ['__cached__', '__doc__', '__file__', '__name__',
++ '__package__', 'spam'])
+
+ def test_6(self):
+ hier = [
+@@ -216,13 +216,13 @@ class Test(unittest.TestCase):
+
+ import t6
+ self.assertEqual(fixdir(dir(t6)),
+- ['__all__', '__doc__', '__file__',
++ ['__all__', '__cached__', '__doc__', '__file__',
+ '__name__', '__package__', '__path__'])
+ s = """
+ import t6
+ from t6 import *
+ self.assertEqual(fixdir(dir(t6)),
+- ['__all__', '__doc__', '__file__',
++ ['__all__', '__cached__', '__doc__', '__file__',
+ '__name__', '__package__', '__path__',
+ 'eggs', 'ham', 'spam'])
+ self.assertEqual(dir(), ['eggs', 'ham', 'self', 'spam', 't6'])
+@@ -250,18 +250,18 @@ class Test(unittest.TestCase):
+ t7, sub, subsub = None, None, None
+ import t7 as tas
+ self.assertEqual(fixdir(dir(tas)),
+- ['__doc__', '__file__', '__name__',
++ ['__cached__', '__doc__', '__file__', '__name__',
+ '__package__', '__path__'])
+ self.assertFalse(t7)
+ from t7 import sub as subpar
+ self.assertEqual(fixdir(dir(subpar)),
+- ['__doc__', '__file__', '__name__',
++ ['__cached__', '__doc__', '__file__', '__name__',
+ '__package__', '__path__'])
+ self.assertFalse(t7)
+ self.assertFalse(sub)
+ from t7.sub import subsub as subsubsub
+ self.assertEqual(fixdir(dir(subsubsub)),
+- ['__doc__', '__file__', '__name__',
++ ['__cached__', '__doc__', '__file__', '__name__',
+ '__package__', '__path__', 'spam'])
+ self.assertFalse(t7)
+ self.assertFalse(sub)
+diff --git a/lib-python/2.7/test/test_pkgimport.py b/lib-python/2.7/test/test_pkgimport.py
+index 30d48cd..490060f 100644
+--- a/lib-python/2.7/test/test_pkgimport.py
++++ b/lib-python/2.7/test/test_pkgimport.py
+@@ -1,5 +1,6 @@
+-import os, sys, string, random, tempfile, unittest
++import os, sys, shutil, string, random, tempfile, unittest
+
++from imp import cache_from_source
+ from test.test_support import run_unittest
+
+ class TestImport(unittest.TestCase):
+@@ -27,22 +28,17 @@ class TestImport(unittest.TestCase):
+ self.module_path = os.path.join(self.package_dir, 'foo'+os.extsep+'py')
+
+ def tearDown(self):
+- for file in os.listdir(self.package_dir):
+- os.remove(os.path.join(self.package_dir, file))
+- os.rmdir(self.package_dir)
+- os.rmdir(self.test_dir)
++ shutil.rmtree(self.test_dir)
+ self.assertNotEqual(sys.path.count(self.test_dir), 0)
+ sys.path.remove(self.test_dir)
+ self.remove_modules()
+
+ def rewrite_file(self, contents):
+- for extension in "co":
+- compiled_path = self.module_path + extension
+- if os.path.exists(compiled_path):
+- os.remove(compiled_path)
+- f = open(self.module_path, 'w')
+- f.write(contents)
+- f.close()
++ compiled_path = cache_from_source(self.module_path)
++ if os.path.exists(compiled_path):
++ os.remove(compiled_path)
++ with open(self.module_path, 'w') as f:
++ f.write(contents)
+
+ def test_package_import__semantics(self):
+
+diff --git a/lib-python/2.7/test/test_py_compile.py b/lib-python/2.7/test/test_py_compile.py
+index 5ec523a..eff87df 100644
+--- a/lib-python/2.7/test/test_py_compile.py
++++ b/lib-python/2.7/test/test_py_compile.py
+@@ -12,7 +12,7 @@ class PyCompileTests(unittest.TestCase):
+ def setUp(self):
+ self.directory = tempfile.mkdtemp()
+ self.source_path = os.path.join(self.directory, '_test.py')
+- self.pyc_path = self.source_path + 'c'
++ self.pyc_path = imp.cache_from_source(self.source_path)
+ self.cwd_drive = os.path.splitdrive(os.getcwd())[0]
+ # In these tests we compute relative paths. When using Windows, the
+ # current working directory path and the 'self.source_path' might be
+@@ -35,9 +35,10 @@ class PyCompileTests(unittest.TestCase):
+ self.assertTrue(os.path.exists(self.pyc_path))
+
+ def test_cwd(self):
++ pyc_file = imp.cache_from_source(os.path.basename(self.source_path))
+ with support.change_cwd(self.directory):
+ py_compile.compile(os.path.basename(self.source_path),
+- os.path.basename(self.pyc_path))
++ pyc_file)
+ self.assertTrue(os.path.exists(self.pyc_path))
+
+ def test_relative_path(self):
+diff --git a/lib-python/2.7/test/test_pydoc.py b/lib-python/2.7/test/test_pydoc.py
+index 0e9f5f3..58c5781 100644
+--- a/lib-python/2.7/test/test_pydoc.py
++++ b/lib-python/2.7/test/test_pydoc.py
+@@ -6,6 +6,7 @@ import re
+ import py_compile
+ import pydoc
+ import contextlib
++import imp
+ import inspect
+ import keyword
+ import pkgutil
+@@ -418,7 +419,7 @@ foo = 1
+ def test_synopsis_sourceless_empty_doc(self):
+ with test.test_support.temp_cwd() as test_dir:
+ init_path = os.path.join(test_dir, 'foomod42.py')
+- cached_path = os.path.join(test_dir, 'foomod42.pyc')
++ cached_path = imp.cache_from_source(init_path)
+ with open(init_path, 'w') as fobj:
+ fobj.write("foo = 1")
+ py_compile.compile(init_path)
+diff --git a/lib-python/2.7/test/test_runpy.py b/lib-python/2.7/test/test_runpy.py
+index b635c1d..a45f9be 100644
+--- a/lib-python/2.7/test/test_runpy.py
++++ b/lib-python/2.7/test/test_runpy.py
+@@ -5,8 +5,9 @@ import os.path
+ import sys
+ import re
+ import tempfile
+-from test.test_support import verbose, run_unittest, forget, check_impl_detail
+-from test.script_helper import (temp_dir, make_script, compile_script,
++import py_compile
++from test.test_support import verbose, run_unittest, forget, check_impl_detail, make_legacy_pyc
++from test.script_helper import (temp_dir, make_script,
+ make_pkg, make_zip_script, make_zip_pkg)
+
+ if check_impl_detail(pypy=True):
+@@ -50,6 +51,7 @@ class RunModuleCodeTest(unittest.TestCase):
+ self.assertEqual(d["result"], self.expected_result)
+ self.assertIs(d["__name__"], None)
+ self.assertIs(d["__file__"], None)
++ self.assertIs(d["__cached__"], None)
+ self.assertIs(d["__loader__"], None)
+ self.assertIs(d["__package__"], None)
+ self.assertIs(d["run_argv0"], saved_argv0)
+@@ -78,6 +80,7 @@ class RunModuleCodeTest(unittest.TestCase):
+ self.assertTrue(d2["run_name_in_sys_modules"])
+ self.assertTrue(d2["module_in_sys_modules"])
+ self.assertIs(d2["__file__"], file)
++ self.assertIs(d2["__cached__"], None)
+ self.assertIs(d2["run_argv0"], file)
+ self.assertIs(d2["__loader__"], loader)
+ self.assertIs(d2["__package__"], package)
+@@ -177,6 +180,7 @@ class RunModuleTest(unittest.TestCase):
+ __import__(mod_name)
+ os.remove(mod_fname)
+ if not sys.dont_write_bytecode:
++ make_legacy_pyc(mod_fname)
+ if verbose: print "Running from compiled:", mod_name
+ d2 = run_module(mod_name) # Read from bytecode
+ self.assertIn("x", d2)
+@@ -201,6 +205,7 @@ class RunModuleTest(unittest.TestCase):
+ __import__(mod_name)
+ os.remove(mod_fname)
+ if not sys.dont_write_bytecode:
++ make_legacy_pyc(mod_fname)
+ if verbose: print "Running from compiled:", pkg_name
+ d2 = run_module(pkg_name) # Read from bytecode
+ self.assertIn("x", d2)
+@@ -257,6 +262,7 @@ from ..uncle.cousin import nephew
+ __import__(mod_name)
+ os.remove(mod_fname)
+ if not sys.dont_write_bytecode:
++ make_legacy_pyc(mod_fname)
+ if verbose: print "Running from compiled:", mod_name
+ d2 = run_module(mod_name, run_name=run_name) # Read from bytecode
+ self.assertIn("__package__", d2)
+@@ -348,6 +354,7 @@ argv0 = sys.argv[0]
+ result = run_path(script_name)
+ self.assertEqual(result["__name__"], expected_name)
+ self.assertEqual(result["__file__"], expected_file)
++ self.assertEqual(result["__cached__"], None)
+ self.assertIn("argv0", result)
+ self.assertEqual(result["argv0"], expected_argv0)
+ self.assertEqual(result["__package__"], expected_package)
+@@ -367,7 +374,7 @@ argv0 = sys.argv[0]
+ with temp_dir() as script_dir:
+ mod_name = 'script'
+ script_name = self._make_test_script(script_dir, mod_name)
+- compiled_name = compile_script(script_name)
++ compiled_name = py_compile.compile(script_name, doraise=True)
+ os.remove(script_name)
+ self._check_script(compiled_name, "<run_path>", compiled_name,
+ compiled_name, None)
+@@ -385,9 +392,10 @@ argv0 = sys.argv[0]
+ with temp_dir() as script_dir:
+ mod_name = '__main__'
+ script_name = self._make_test_script(script_dir, mod_name)
+- compiled_name = compile_script(script_name)
++ compiled_name = py_compile.compile(script_name, doraise=True)
+ os.remove(script_name)
+- self._check_script(script_dir, "<run_path>", compiled_name,
++ legacy_pyc = make_legacy_pyc(script_name)
++ self._check_script(script_dir, "<run_path>", legacy_pyc,
+ script_dir, '')
+
+ def test_directory_error(self):
+@@ -408,8 +416,9 @@ argv0 = sys.argv[0]
+ with temp_dir() as script_dir:
+ mod_name = '__main__'
+ script_name = self._make_test_script(script_dir, mod_name)
+- compiled_name = compile_script(script_name)
+- zip_name, fname = make_zip_script(script_dir, 'test_zip', compiled_name)
++ compiled_name = py_compile.compile(script_name, doraise=True)
++ zip_name, fname = make_zip_script(script_dir, 'test_zip',
++ compiled_name)
+ self._check_script(zip_name, "<run_path>", fname, zip_name, '')
+
+ def test_zipfile_error(self):
+diff --git a/lib-python/2.7/test/test_site.py b/lib-python/2.7/test/test_site.py
+index de3f28b..02331be 100644
+--- a/lib-python/2.7/test/test_site.py
++++ b/lib-python/2.7/test/test_site.py
+@@ -318,19 +318,40 @@ class ImportSideEffectTests(unittest.TestCase):
+ """Restore sys.path"""
+ sys.path[:] = self.sys_path
+
+- def test_abs__file__(self):
+- # Make sure all imported modules have their __file__ attribute
+- # as an absolute path.
+- # Handled by abs__file__()
+- site.abs__file__()
+- for module in (sys, os, __builtin__):
+- try:
+- self.assertTrue(os.path.isabs(module.__file__), repr(module))
+- except AttributeError:
+- continue
+- # We could try everything in sys.modules; however, when regrtest.py
+- # runs something like test_frozen before test_site, then we will
+- # be testing things loaded *after* test_site did path normalization
++ def test_abs_paths(self):
++ # Make sure all imported modules have their __file__ and __cached__
++ # attributes as absolute paths. Arranging to put the Lib directory on
++ # PYTHONPATH would cause the os module to have a relative path for
++ # __file__ if abs_paths() does not get run. sys and builtins (the
++ # only other modules imported before site.py runs) do not have
++ # __file__ or __cached__ because they are built-in.
++ parent = os.path.relpath(os.path.dirname(os.__file__))
++ env = os.environ.copy()
++ env['PYTHONPATH'] = parent
++ # We use uuid rather than os, as os isn't modified in pypy
++ # and so not in the same path as test_site
++ command = 'import uuid; print uuid.__file__, uuid.__cached__'
++ # First, prove that with -S (no 'import site'), the paths are
++ # relative.
++ proc = subprocess.Popen([sys.executable, '-S', '-c', command],
++ env=env,
++ stdout=subprocess.PIPE,
++ stderr=subprocess.PIPE)
++ stdout, stderr = proc.communicate()
++ self.assertEqual(proc.returncode, 0)
++ os__file__, os__cached__ = stdout.split()
++ self.assertFalse(os.path.isabs(os__file__))
++ self.assertFalse(os.path.isabs(os__cached__))
++ # Now, with 'import site', it works.
++ proc = subprocess.Popen([sys.executable, '-c', command],
++ env=env,
++ stdout=subprocess.PIPE,
++ stderr=subprocess.PIPE)
++ stdout, stderr = proc.communicate()
++ self.assertEqual(proc.returncode, 0)
++ os__file__, os__cached__ = stdout.split()
++ self.assertTrue(os.path.isabs(os__file__))
++ self.assertTrue(os.path.isabs(os__cached__))
+
+ def test_no_duplicate_paths(self):
+ # No duplicate paths should exist in sys.path
+diff --git a/lib-python/2.7/test/test_support.py b/lib-python/2.7/test/test_support.py
+index 258b339..0e34980 100644
+--- a/lib-python/2.7/test/test_support.py
++++ b/lib-python/2.7/test/test_support.py
+@@ -18,6 +18,7 @@ import unittest
+ import importlib
+ import UserDict
+ import re
++import imp
+ import time
+ import struct
+ import sysconfig
+@@ -36,7 +37,7 @@ __all__ = ["Error", "TestFailed", "ResourceDenied", "import_module",
+ "open_urlresource", "check_warnings", "check_py3k_warnings",
+ "CleanImport", "EnvironmentVarGuard", "captured_output",
+ "captured_stdout", "TransientResource", "transient_internet",
+- "run_with_locale", "set_memlimit", "bigmemtest", "bigaddrspacetest",
++ "run_with_locale", "set_memlimit", "temp_umask", "bigmemtest", "bigaddrspacetest",
+ "BasicTestRunner", "run_unittest", "run_doctest", "threading_setup",
+ "threading_cleanup", "reap_threads", "start_threads", "cpython_only",
+ "check_impl_detail", "get_attribute", "py3k_bytes",
+@@ -292,16 +293,37 @@ def rmtree(path):
+ if e.errno not in (errno.ENOENT, errno.ESRCH):
+ raise
+
++def make_legacy_pyc(source):
++ """Move a PEP 3147 pyc/pyo file to its legacy pyc/pyo location.
++
++ The choice of .pyc or .pyo extension is done based on the __debug__ flag
++ value.
++
++ :param source: The file system path to the source file. The source file
++ does not need to exist, however the PEP 3147 pyc file must exist.
++ :return: The file system path to the legacy pyc file.
++ """
++ pyc_file = imp.cache_from_source(source)
++ up_one = os.path.dirname(os.path.abspath(source))
++ legacy_pyc = os.path.join(up_one, source + ('c' if __debug__ else 'o'))
++ os.rename(pyc_file, legacy_pyc)
++ return legacy_pyc
++
+ def forget(modname):
+- '''"Forget" a module was ever imported by removing it from sys.modules and
+- deleting any .pyc and .pyo files.'''
++ """'Forget' a module was ever imported.
++
++ This removes the module from sys.modules and deletes any PEP 3147 or
++ legacy .pyc and .pyo files.
++ """
+ unload(modname)
+ for dirname in sys.path:
+- unlink(os.path.join(dirname, modname + os.extsep + 'pyc'))
+- # Deleting the .pyo file cannot be within the 'try' for the .pyc since
+- # the chance exists that there is no .pyc (and thus the 'try' statement
+- # is exited) but there is a .pyo file.
+- unlink(os.path.join(dirname, modname + os.extsep + 'pyo'))
++ source = os.path.join(dirname, modname + os.extsep + 'py')
++ # It doesn't matter if they exist or not, unlink all possible
++ # combinations of PEP 3147 and legacy pyc and pyo files.
++ unlink(source + 'c')
++ unlink(source + 'o')
++ unlink(imp.cache_from_source(source, debug_override=True))
++ unlink(imp.cache_from_source(source, debug_override=False))
+
+ # Check whether a gui is actually available
+ def _is_gui_available():
+@@ -765,6 +787,16 @@ def temp_cwd(name='tempcwd', quiet=False):
+ rmtree(name)
+
+
++@contextlib.contextmanager
++def temp_umask(umask):
++ """Context manager that temporarily sets the process umask."""
++ oldmask = os.umask(umask)
++ try:
++ yield
++ finally:
++ os.umask(oldmask)
++
++
+ def findfile(file, here=None, subdir=None):
+ """Try to find a file on sys.path and the working directory. If it is not
+ found the argument passed to the function is returned (this does not
+diff --git a/lib-python/2.7/test/test_traceback.py b/lib-python/2.7/test/test_traceback.py
+index c8ade06..7635579 100644
+--- a/lib-python/2.7/test/test_traceback.py
++++ b/lib-python/2.7/test/test_traceback.py
+@@ -1,6 +1,7 @@
+ """Test cases for traceback module"""
+
+ from StringIO import StringIO
++import shutil
+ import sys
+ import unittest
+ from imp import reload
+@@ -114,9 +115,7 @@ def test():
+ self.assertEqual(src, 'raise NotImplementedError')
+ finally:
+ sys.path[:] = savedpath
+- for f in os.listdir(testdir):
+- os.unlink(os.path.join(testdir, f))
+- os.rmdir(testdir)
++ shutil.rmtree(testdir)
+
+ err = self.get_exception_format(self.syntax_error_bad_indentation2,
+ IndentationError)
+diff --git a/lib-python/2.7/test/test_zipfile.py b/lib-python/2.7/test/test_zipfile.py
+index 9c63aeb..a084019 100644
+--- a/lib-python/2.7/test/test_zipfile.py
++++ b/lib-python/2.7/test/test_zipfile.py
+@@ -6,6 +6,7 @@ except ImportError:
+
+ import os
+ import io
++import imp
+ import sys
+ import time
+ import struct
+@@ -836,7 +837,13 @@ class PyZipFileTests(unittest.TestCase):
+ with zipfile.PyZipFile(TemporaryFile(), "w") as zipfp:
+ fn = __file__
+ if fn.endswith('.pyc') or fn.endswith('.pyo'):
+- fn = fn[:-1]
++ path_split = fn.split(os.sep)
++ if os.altsep is not None:
++ path_split.extend(fn.split(os.altsep))
++ if '__pycache__' in path_split:
++ fn = imp.source_from_cache(fn)
++ else:
++ fn = fn[:-1]
+
+ zipfp.writepy(fn)
+
+diff --git a/lib-python/2.7/test/test_zipimport.py b/lib-python/2.7/test/test_zipimport.py
+index a66738a..da8c38e 100644
+--- a/lib-python/2.7/test/test_zipimport.py
++++ b/lib-python/2.7/test/test_zipimport.py
+@@ -43,17 +43,14 @@ NOW = time.time()
+ test_pyc = make_pyc(test_co, NOW)
+
+
+-if __debug__:
+- pyc_ext = ".pyc"
+-else:
+- pyc_ext = ".pyo"
+-
+-
+ TESTMOD = "ziptestmodule"
+ TESTPACK = "ziptestpackage"
+ TESTPACK2 = "ziptestpackage2"
+ TEMP_ZIP = os.path.abspath("junk95142" + os.extsep + "zip")
+
++pyc_file = imp.cache_from_source(TESTMOD + '.py')
++pyc_ext = ('.pyc' if __debug__ else '.pyo')
++
+
+ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
+
+diff --git a/lib-python/2.7/zipfile.py b/lib-python/2.7/zipfile.py
+index a16d860..2198048 100644
+--- a/lib-python/2.7/zipfile.py
++++ b/lib-python/2.7/zipfile.py
+@@ -3,6 +3,7 @@ Read and write ZIP files.
+ """
+ import struct, os, time, sys, shutil
+ import binascii, cStringIO, stat
++import imp
+ import io
+ import re
+ import string
+@@ -1457,22 +1458,42 @@ class PyZipFile(ZipFile):
+ file_py = pathname + ".py"
+ file_pyc = pathname + ".pyc"
+ file_pyo = pathname + ".pyo"
+- if os.path.isfile(file_pyo) and \
+- os.stat(file_pyo).st_mtime >= os.stat(file_py).st_mtime:
+- fname = file_pyo # Use .pyo file
+- elif not os.path.isfile(file_pyc) or \
+- os.stat(file_pyc).st_mtime < os.stat(file_py).st_mtime:
++ pycache_pyc = imp.cache_from_source(file_py, True)
++ pycache_pyo = imp.cache_from_source(file_py, False)
++ if (os.path.isfile(file_pyo) and
++ os.stat(file_pyo).st_mtime >= os.stat(file_py).st_mtime):
++ # Use .pyo file.
++ arcname = fname = file_pyo
++ elif (os.path.isfile(file_pyc) and
++ os.stat(file_pyc).st_mtime >= os.stat(file_py).st_mtime):
++ # Use .pyc file.
++ arcname = fname = file_pyc
++ elif (os.path.isfile(pycache_pyc) and
++ os.stat(pycache_pyc).st_mtime >= os.stat(file_py).st_mtime):
++ # Use the __pycache__/*.pyc file, but write it to the legacy pyc
++ # file name in the archive.
++ fname = pycache_pyc
++ arcname = file_pyc
++ elif (os.path.isfile(pycache_pyo) and
++ os.stat(pycache_pyo).st_mtime >= os.stat(file_py).st_mtime):
++ # Use the __pycache__/*.pyo file, but write it to the legacy pyo
++ # file name in the archive.
++ fname = pycache_pyo
++ arcname = file_pyo
++ else:
++ # Compile py into PEP 3147 pyc file.
+ import py_compile
+ if self.debug:
+ print "Compiling", file_py
+ try:
+- py_compile.compile(file_py, file_pyc, None, True)
+- except py_compile.PyCompileError,err:
++ py_compile.compile(file_py, doraise=True)
++ except py_compile.PyCompileError, error:
+ print err.msg
+- fname = file_pyc
+- else:
+- fname = file_pyc
+- archivename = os.path.split(fname)[1]
++ fname = file_py
++ else:
++ fname = (pycache_pyc if __debug__ else pycache_pyo)
++ arcname = (file_pyc if __debug__ else file_pyo)
++ archivename = os.path.split(arcname)[1]
+ if basename:
+ archivename = "%s/%s" % (basename, archivename)
+ return (fname, archivename)
diff --git a/debian/patches/plat-gnukfreebsd b/debian/patches/plat-gnukfreebsd
new file mode 100644
index 0000000..d4d236a
--- /dev/null
+++ b/debian/patches/plat-gnukfreebsd
@@ -0,0 +1,5027 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: DLFCN.py for kfreebsd
+
+Author: Jakub Wilk <jwilk@debian.org>
+Origin: Debian cpython packaging
+Bug-Debian: http://bugs.debian.org/593818
+Last-Update: 2014-09-22
+---
+ lib-python/2.7/plat-gnukfreebsd10/DLFCN.py | 118 +++++
+ lib-python/2.7/plat-gnukfreebsd10/IN.py | 809 +++++++++++++++++++++++++++++
+ lib-python/2.7/plat-gnukfreebsd10/TYPES.py | 303 +++++++++++
+ lib-python/2.7/plat-gnukfreebsd11/DLFCN.py | 118 +++++
+ lib-python/2.7/plat-gnukfreebsd11/IN.py | 809 +++++++++++++++++++++++++++++
+ lib-python/2.7/plat-gnukfreebsd11/TYPES.py | 303 +++++++++++
+ lib-python/2.7/plat-gnukfreebsd8/DLFCN.py | 118 +++++
+ lib-python/2.7/plat-gnukfreebsd8/IN.py | 809 +++++++++++++++++++++++++++++
+ lib-python/2.7/plat-gnukfreebsd8/TYPES.py | 303 +++++++++++
+ lib-python/2.7/plat-gnukfreebsd9/DLFCN.py | 118 +++++
+ lib-python/2.7/plat-gnukfreebsd9/IN.py | 809 +++++++++++++++++++++++++++++
+ lib-python/2.7/plat-gnukfreebsd9/TYPES.py | 303 +++++++++++
+ 12 files changed, 4920 insertions(+)
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd10/DLFCN.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd10/IN.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd10/TYPES.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd11/DLFCN.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd11/IN.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd11/TYPES.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd8/DLFCN.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd8/IN.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd8/TYPES.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd9/DLFCN.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd9/IN.py
+ create mode 100644 lib-python/2.7/plat-gnukfreebsd9/TYPES.py
+
+diff --git a/lib-python/2.7/plat-gnukfreebsd10/DLFCN.py b/lib-python/2.7/plat-gnukfreebsd10/DLFCN.py
+new file mode 100644
+index 0000000..d020fe1
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd10/DLFCN.py
+@@ -0,0 +1,118 @@
++# Generated by h2py from /usr/include/dlfcn.h
++_DLFCN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from bits/dlfcn.h
++RTLD_LAZY = 0x00001
++RTLD_NOW = 0x00002
++RTLD_BINDING_MASK = 0x3
++RTLD_NOLOAD = 0x00004
++RTLD_DEEPBIND = 0x00008
++RTLD_GLOBAL = 0x00100
++RTLD_LOCAL = 0
++RTLD_NODELETE = 0x01000
++LM_ID_BASE = 0
++LM_ID_NEWLM = -1
+diff --git a/lib-python/2.7/plat-gnukfreebsd10/IN.py b/lib-python/2.7/plat-gnukfreebsd10/IN.py
+new file mode 100644
+index 0000000..7e5f845
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd10/IN.py
+@@ -0,0 +1,809 @@
++# Generated by h2py from /usr/include/netinet/in.h
++_NETINET_IN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from stdint.h
++_STDINT_H = 1
++
++# Included from bits/wchar.h
++_BITS_WCHAR_H = 1
++__WCHAR_MAX = (2147483647)
++__WCHAR_MIN = (-__WCHAR_MAX - 1)
++def __INT64_C(c): return c ## L
++
++def __UINT64_C(c): return c ## UL
++
++def __INT64_C(c): return c ## LL
++
++def __UINT64_C(c): return c ## ULL
++
++INT8_MIN = (-128)
++INT16_MIN = (-32767-1)
++INT32_MIN = (-2147483647-1)
++INT64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT8_MAX = (127)
++INT16_MAX = (32767)
++INT32_MAX = (2147483647)
++INT64_MAX = (__INT64_C(9223372036854775807))
++UINT8_MAX = (255)
++UINT16_MAX = (65535)
++UINT64_MAX = (__UINT64_C(18446744073709551615))
++INT_LEAST8_MIN = (-128)
++INT_LEAST16_MIN = (-32767-1)
++INT_LEAST32_MIN = (-2147483647-1)
++INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_LEAST8_MAX = (127)
++INT_LEAST16_MAX = (32767)
++INT_LEAST32_MAX = (2147483647)
++INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_LEAST8_MAX = (255)
++UINT_LEAST16_MAX = (65535)
++UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
++INT_FAST8_MIN = (-128)
++INT_FAST16_MIN = (-9223372036854775807L-1)
++INT_FAST32_MIN = (-9223372036854775807L-1)
++INT_FAST16_MIN = (-2147483647-1)
++INT_FAST32_MIN = (-2147483647-1)
++INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_FAST8_MAX = (127)
++INT_FAST16_MAX = (9223372036854775807L)
++INT_FAST32_MAX = (9223372036854775807L)
++INT_FAST16_MAX = (2147483647)
++INT_FAST32_MAX = (2147483647)
++INT_FAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_FAST8_MAX = (255)
++UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
++INTPTR_MIN = (-9223372036854775807L-1)
++INTPTR_MAX = (9223372036854775807L)
++INTPTR_MIN = (-2147483647-1)
++INTPTR_MAX = (2147483647)
++INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
++INTMAX_MAX = (__INT64_C(9223372036854775807))
++UINTMAX_MAX = (__UINT64_C(18446744073709551615))
++PTRDIFF_MIN = (-9223372036854775807L-1)
++PTRDIFF_MAX = (9223372036854775807L)
++PTRDIFF_MIN = (-2147483647-1)
++PTRDIFF_MAX = (2147483647)
++SIG_ATOMIC_MIN = (-2147483647-1)
++SIG_ATOMIC_MAX = (2147483647)
++WCHAR_MIN = __WCHAR_MIN
++WCHAR_MAX = __WCHAR_MAX
++def INT8_C(c): return c
++
++def INT16_C(c): return c
++
++def INT32_C(c): return c
++
++def INT64_C(c): return c ## L
++
++def INT64_C(c): return c ## LL
++
++def UINT8_C(c): return c
++
++def UINT16_C(c): return c
++
++def UINT32_C(c): return c ## U
++
++def UINT64_C(c): return c ## UL
++
++def UINT64_C(c): return c ## ULL
++
++def INTMAX_C(c): return c ## L
++
++def UINTMAX_C(c): return c ## UL
++
++def INTMAX_C(c): return c ## LL
++
++def UINTMAX_C(c): return c ## ULL
++
++
++# Included from sys/socket.h
++_SYS_SOCKET_H = 1
++
++# Included from sys/uio.h
++_SYS_UIO_H = 1
++from TYPES import *
++
++# Included from bits/uio.h
++_BITS_UIO_H = 1
++from TYPES import *
++UIO_MAXIOV = 1024
++
++# Included from bits/sigset.h
++_SIGSET_H_types = 1
++_SIGSET_H_fns = 1
++def __sigword(sig): return (((sig) - 1) >> 5)
++
++def __sigemptyset(set): return \
++
++def __sigfillset(set): return \
++
++def __sigisemptyset(set): return \
++
++
++# Included from bits/socket.h
++__BITS_SOCKET_H = 1
++
++# Included from limits.h
++_LIBC_LIMITS_H_ = 1
++MB_LEN_MAX = 16
++_LIMITS_H = 1
++CHAR_BIT = 8
++SCHAR_MIN = (-128)
++SCHAR_MAX = 127
++UCHAR_MAX = 255
++CHAR_MIN = 0
++CHAR_MAX = UCHAR_MAX
++CHAR_MIN = SCHAR_MIN
++CHAR_MAX = SCHAR_MAX
++SHRT_MIN = (-32768)
++SHRT_MAX = 32767
++USHRT_MAX = 65535
++INT_MAX = 2147483647
++LONG_MAX = 9223372036854775807L
++LONG_MAX = 2147483647L
++LONG_MIN = (-LONG_MAX - 1L)
++
++# Included from bits/posix1_lim.h
++_BITS_POSIX1_LIM_H = 1
++_POSIX_AIO_LISTIO_MAX = 2
++_POSIX_AIO_MAX = 1
++_POSIX_ARG_MAX = 4096
++_POSIX_CHILD_MAX = 25
++_POSIX_CHILD_MAX = 6
++_POSIX_DELAYTIMER_MAX = 32
++_POSIX_HOST_NAME_MAX = 255
++_POSIX_LINK_MAX = 8
++_POSIX_LOGIN_NAME_MAX = 9
++_POSIX_MAX_CANON = 255
++_POSIX_MAX_INPUT = 255
++_POSIX_MQ_OPEN_MAX = 8
++_POSIX_MQ_PRIO_MAX = 32
++_POSIX_NAME_MAX = 14
++_POSIX_NGROUPS_MAX = 8
++_POSIX_NGROUPS_MAX = 0
++_POSIX_OPEN_MAX = 20
++_POSIX_OPEN_MAX = 16
++_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
++_POSIX_PATH_MAX = 256
++_POSIX_PIPE_BUF = 512
++_POSIX_RE_DUP_MAX = 255
++_POSIX_RTSIG_MAX = 8
++_POSIX_SEM_NSEMS_MAX = 256
++_POSIX_SEM_VALUE_MAX = 32767
++_POSIX_SIGQUEUE_MAX = 32
++_POSIX_SSIZE_MAX = 32767
++_POSIX_STREAM_MAX = 8
++_POSIX_SYMLINK_MAX = 255
++_POSIX_SYMLOOP_MAX = 8
++_POSIX_TIMER_MAX = 32
++_POSIX_TTY_NAME_MAX = 9
++_POSIX_TZNAME_MAX = 6
++_POSIX_QLIMIT = 1
++_POSIX_HIWAT = _POSIX_PIPE_BUF
++_POSIX_UIO_MAXIOV = 16
++_POSIX_CLOCKRES_MIN = 20000000
++
++# Included from bits/local_lim.h
++
++# Included from sys/syslimits.h
++ARG_MAX = 262144
++CHILD_MAX = 40
++LINK_MAX = 32767
++MAX_CANON = 255
++MAX_INPUT = 255
++NAME_MAX = 255
++NGROUPS_MAX = 1023
++OPEN_MAX = 64
++PATH_MAX = 1024
++PIPE_BUF = 512
++IOV_MAX = 1024
++_POSIX_THREAD_KEYS_MAX = 128
++PTHREAD_KEYS_MAX = 1024
++_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
++PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++_POSIX_THREAD_THREADS_MAX = 64
++PTHREAD_THREADS_MAX = 1024
++AIO_PRIO_DELTA_MAX = 20
++PTHREAD_STACK_MIN = 16384
++TIMER_MAX = 256
++DELAYTIMER_MAX = 2147483647
++SSIZE_MAX = LONG_MAX
++NGROUPS_MAX = 8
++
++# Included from bits/posix2_lim.h
++_BITS_POSIX2_LIM_H = 1
++_POSIX2_BC_BASE_MAX = 99
++_POSIX2_BC_DIM_MAX = 2048
++_POSIX2_BC_SCALE_MAX = 99
++_POSIX2_BC_STRING_MAX = 1000
++_POSIX2_COLL_WEIGHTS_MAX = 2
++_POSIX2_EXPR_NEST_MAX = 32
++_POSIX2_LINE_MAX = 2048
++_POSIX2_RE_DUP_MAX = 255
++_POSIX2_CHARCLASS_NAME_MAX = 14
++BC_BASE_MAX = _POSIX2_BC_BASE_MAX
++BC_DIM_MAX = _POSIX2_BC_DIM_MAX
++BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
++BC_STRING_MAX = _POSIX2_BC_STRING_MAX
++COLL_WEIGHTS_MAX = 255
++EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
++LINE_MAX = _POSIX2_LINE_MAX
++CHARCLASS_NAME_MAX = 2048
++RE_DUP_MAX = (0x7fff)
++
++# Included from bits/xopen_lim.h
++_XOPEN_LIM_H = 1
++
++# Included from bits/stdio_lim.h
++L_tmpnam = 20
++TMP_MAX = 238328
++FILENAME_MAX = 1024
++L_ctermid = 9
++L_cuserid = 9
++FOPEN_MAX = 64
++IOV_MAX = 1024
++_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
++NL_ARGMAX = _POSIX_ARG_MAX
++NL_LANGMAX = _POSIX2_LINE_MAX
++NL_MSGMAX = INT_MAX
++NL_NMAX = INT_MAX
++NL_SETMAX = INT_MAX
++NL_TEXTMAX = INT_MAX
++NZERO = 20
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 32
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 64
++LONG_BIT = 32
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__S32_TYPE = int
++__SWORD_TYPE = int
++__SLONG32_TYPE = int
++
++# Included from bits/typesizes.h
++_BITS_TYPESIZES_H = 1
++__PID_T_TYPE = __S32_TYPE
++__CLOCK_T_TYPE = __S32_TYPE
++__SWBLK_T_TYPE = __S32_TYPE
++__CLOCKID_T_TYPE = __S32_TYPE
++__TIMER_T_TYPE = __S32_TYPE
++__SSIZE_T_TYPE = __SWORD_TYPE
++__FD_SETSIZE = 1024
++PF_UNSPEC = 0
++PF_LOCAL = 1
++PF_UNIX = PF_LOCAL
++PF_FILE = PF_LOCAL
++PF_INET = 2
++PF_IMPLINK = 3
++PF_PUP = 4
++PF_CHAOS = 5
++PF_NS = 6
++PF_ISO = 7
++PF_OSI = PF_ISO
++PF_ECMA = 8
++PF_DATAKIT = 9
++PF_CCITT = 10
++PF_SNA = 11
++PF_DECnet = 12
++PF_DLI = 13
++PF_LAT = 14
++PF_HYLINK = 15
++PF_APPLETALK = 16
++PF_ROUTE = 17
++PF_LINK = 18
++PF_XTP = 19
++PF_COIP = 20
++PF_CNT = 21
++PF_RTIP = 22
++PF_IPX = 23
++PF_SIP = 24
++PF_PIP = 25
++PF_ISDN = 26
++PF_KEY = 27
++PF_INET6 = 28
++PF_NATM = 29
++PF_ATM = 30
++PF_HDRCMPLT = 31
++PF_NETGRAPH = 32
++PF_MAX = 33
++AF_UNSPEC = PF_UNSPEC
++AF_LOCAL = PF_LOCAL
++AF_UNIX = PF_UNIX
++AF_FILE = PF_FILE
++AF_INET = PF_INET
++AF_IMPLINK = PF_IMPLINK
++AF_PUP = PF_PUP
++AF_CHAOS = PF_CHAOS
++AF_NS = PF_NS
++AF_ISO = PF_ISO
++AF_OSI = PF_OSI
++AF_ECMA = PF_ECMA
++AF_DATAKIT = PF_DATAKIT
++AF_CCITT = PF_CCITT
++AF_SNA = PF_SNA
++AF_DECnet = PF_DECnet
++AF_DLI = PF_DLI
++AF_LAT = PF_LAT
++AF_HYLINK = PF_HYLINK
++AF_APPLETALK = PF_APPLETALK
++AF_ROUTE = PF_ROUTE
++AF_LINK = PF_LINK
++pseudo_AF_XTP = PF_XTP
++AF_COIP = PF_COIP
++AF_CNT = PF_CNT
++pseudo_AF_RTIP = PF_RTIP
++AF_IPX = PF_IPX
++AF_SIP = PF_SIP
++pseudo_AF_PIP = PF_PIP
++AF_ISDN = PF_ISDN
++AF_E164 = AF_ISDN
++pseudo_AF_KEY = PF_KEY
++AF_INET6 = PF_INET6
++AF_NATM = PF_NATM
++AF_ATM = PF_ATM
++pseudo_AF_HDRCMPLT = PF_HDRCMPLT
++AF_NETGRAPH = PF_NETGRAPH
++AF_MAX = PF_MAX
++SOMAXCONN = 128
++
++# Included from bits/sockaddr.h
++_BITS_SOCKADDR_H = 1
++def __SOCKADDR_COMMON(sa_prefix): return \
++
++_HAVE_SA_LEN = 1
++_SS_SIZE = 128
++def CMSG_FIRSTHDR(mhdr): return \
++
++CMGROUP_MAX = 16
++SOL_SOCKET = 0xffff
++LOCAL_PEERCRED = 0x001
++LOCAL_CREDS = 0x002
++LOCAL_CONNWAIT = 0x004
++
++# Included from bits/socket2.h
++def IN_CLASSA(a): return ((((in_addr_t)(a)) & (-2147483648)) == 0)
++
++IN_CLASSA_NET = (-16777216)
++IN_CLASSA_NSHIFT = 24
++IN_CLASSA_HOST = ((-1) & ~IN_CLASSA_NET)
++IN_CLASSA_MAX = 128
++def IN_CLASSB(a): return ((((in_addr_t)(a)) & (-1073741824)) == (-2147483648))
++
++IN_CLASSB_NET = (-65536)
++IN_CLASSB_NSHIFT = 16
++IN_CLASSB_HOST = ((-1) & ~IN_CLASSB_NET)
++IN_CLASSB_MAX = 65536
++def IN_CLASSC(a): return ((((in_addr_t)(a)) & (-536870912)) == (-1073741824))
++
++IN_CLASSC_NET = (-256)
++IN_CLASSC_NSHIFT = 8
++IN_CLASSC_HOST = ((-1) & ~IN_CLASSC_NET)
++def IN_CLASSD(a): return ((((in_addr_t)(a)) & (-268435456)) == (-536870912))
++
++def IN_MULTICAST(a): return IN_CLASSD(a)
++
++def IN_EXPERIMENTAL(a): return ((((in_addr_t)(a)) & (-536870912)) == (-536870912))
++
++def IN_BADCLASS(a): return ((((in_addr_t)(a)) & (-268435456)) == (-268435456))
++
++IN_LOOPBACKNET = 127
++INET_ADDRSTRLEN = 16
++INET6_ADDRSTRLEN = 46
++
++# Included from bits/in.h
++IMPLINK_IP = 155
++IMPLINK_LOWEXPER = 156
++IMPLINK_HIGHEXPER = 158
++IPPROTO_DIVERT = 258
++SOL_IP = 0
++IP_OPTIONS = 1
++IP_HDRINCL = 2
++IP_TOS = 3
++IP_TTL = 4
++IP_RECVOPTS = 5
++IP_RECVRETOPTS = 6
++IP_RECVDSTADDR = 7
++IP_SENDSRCADDR = IP_RECVDSTADDR
++IP_RETOPTS = 8
++IP_MULTICAST_IF = 9
++IP_MULTICAST_TTL = 10
++IP_MULTICAST_LOOP = 11
++IP_ADD_MEMBERSHIP = 12
++IP_DROP_MEMBERSHIP = 13
++IP_MULTICAST_VIF = 14
++IP_RSVP_ON = 15
++IP_RSVP_OFF = 16
++IP_RSVP_VIF_ON = 17
++IP_RSVP_VIF_OFF = 18
++IP_PORTRANGE = 19
++IP_RECVIF = 20
++IP_IPSEC_POLICY = 21
++IP_FAITH = 22
++IP_ONESBCAST = 23
++IP_NONLOCALOK = 24
++IP_FW_TABLE_ADD = 40
++IP_FW_TABLE_DEL = 41
++IP_FW_TABLE_FLUSH = 42
++IP_FW_TABLE_GETSIZE = 43
++IP_FW_TABLE_LIST = 44
++IP_FW_ADD = 50
++IP_FW_DEL = 51
++IP_FW_FLUSH = 52
++IP_FW_ZERO = 53
++IP_FW_GET = 54
++IP_FW_RESETLOG = 55
++IP_FW_NAT_CFG = 56
++IP_FW_NAT_DEL = 57
++IP_FW_NAT_GET_CONFIG = 58
++IP_FW_NAT_GET_LOG = 59
++IP_DUMMYNET_CONFIGURE = 60
++IP_DUMMYNET_DEL = 61
++IP_DUMMYNET_FLUSH = 62
++IP_DUMMYNET_GET = 64
++IP_RECVTTL = 65
++IP_MINTTL = 66
++IP_DONTFRAG = 67
++IP_ADD_SOURCE_MEMBERSHIP = 70
++IP_DROP_SOURCE_MEMBERSHIP = 71
++IP_BLOCK_SOURCE = 72
++IP_UNBLOCK_SOURCE = 73
++IP_MSFILTER = 74
++MCAST_JOIN_GROUP = 80
++MCAST_LEAVE_GROUP = 81
++MCAST_JOIN_SOURCE_GROUP = 82
++MCAST_LEAVE_SOURCE_GROUP = 83
++MCAST_BLOCK_SOURCE = 84
++MCAST_UNBLOCK_SOURCE = 85
++IP_DEFAULT_MULTICAST_TTL = 1
++IP_DEFAULT_MULTICAST_LOOP = 1
++IP_MIN_MEMBERSHIPS = 31
++IP_MAX_MEMBERSHIPS = 4095
++IP_MAX_SOURCE_FILTER = 1024
++MCAST_UNDEFINED = 0
++MCAST_INCLUDE = 1
++MCAST_EXCLUDE = 2
++IP_PORTRANGE_DEFAULT = 0
++IP_PORTRANGE_HIGH = 1
++IP_PORTRANGE_LOW = 2
++IPCTL_FORWARDING = 1
++IPCTL_SENDREDIRECTS = 2
++IPCTL_DEFTTL = 3
++IPCTL_DEFMTU = 4
++IPCTL_RTEXPIRE = 5
++IPCTL_RTMINEXPIRE = 6
++IPCTL_RTMAXCACHE = 7
++IPCTL_SOURCEROUTE = 8
++IPCTL_DIRECTEDBROADCAST = 9
++IPCTL_INTRQMAXLEN = 10
++IPCTL_INTRQDROPS = 11
++IPCTL_STATS = 12
++IPCTL_ACCEPTSOURCEROUTE = 13
++IPCTL_FASTFORWARDING = 14
++IPCTL_KEEPFAITH = 15
++IPCTL_GIF_TTL = 16
++IPCTL_MAXID = 17
++IPV6_SOCKOPT_RESERVED1 = 3
++IPV6_UNICAST_HOPS = 4
++IPV6_MULTICAST_IF = 9
++IPV6_MULTICAST_HOPS = 10
++IPV6_MULTICAST_LOOP = 11
++IPV6_JOIN_GROUP = 12
++IPV6_LEAVE_GROUP = 13
++IPV6_PORTRANGE = 14
++ICMP6_FILTER = 18
++IPV6_CHECKSUM = 26
++IPV6_V6ONLY = 27
++IPV6_IPSEC_POLICY = 28
++IPV6_FAITH = 29
++IPV6_FW_ADD = 30
++IPV6_FW_DEL = 31
++IPV6_FW_FLUSH = 32
++IPV6_FW_ZERO = 33
++IPV6_FW_GET = 34
++IPV6_RTHDRDSTOPTS = 35
++IPV6_RECVPKTINFO = 36
++IPV6_RECVHOPLIMIT = 37
++IPV6_RECVRTHDR = 38
++IPV6_RECVHOPOPTS = 39
++IPV6_RECVDSTOPTS = 40
++IPV6_USE_MIN_MTU = 42
++IPV6_RECVPATHMTU = 43
++IPV6_PATHMTU = 44
++IPV6_PKTINFO = 46
++IPV6_HOPLIMIT = 47
++IPV6_NEXTHOP = 48
++IPV6_HOPOPTS = 49
++IPV6_DSTOPTS = 50
++IPV6_RTHDR = 51
++IPV6_RECVTCLASS = 57
++IPV6_AUTOFLOWLABEL = 59
++IPV6_TCLASS = 61
++IPV6_DONTFRAG = 62
++IPV6_PREFER_TEMPADDR = 63
++IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP
++IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP
++IPV6_RXHOPOPTS = IPV6_HOPOPTS
++IPV6_RXDSTOPTS = IPV6_DSTOPTS
++SOL_IPV6 = 41
++SOL_ICMPV6 = 58
++IPV6_DEFAULT_MULTICAST_HOPS = 1
++IPV6_DEFAULT_MULTICAST_LOOP = 1
++IPV6_PORTRANGE_DEFAULT = 0
++IPV6_PORTRANGE_HIGH = 1
++IPV6_PORTRANGE_LOW = 2
++IPV6_RTHDR_LOOSE = 0
++IPV6_RTHDR_STRICT = 1
++IPV6_RTHDR_TYPE_0 = 0
++IPV6CTL_FORWARDING = 1
++IPV6CTL_SENDREDIRECTS = 2
++IPV6CTL_DEFHLIM = 3
++IPV6CTL_FORWSRCRT = 5
++IPV6CTL_STATS = 6
++IPV6CTL_MRTSTATS = 7
++IPV6CTL_MRTPROTO = 8
++IPV6CTL_MAXFRAGPACKETS = 9
++IPV6CTL_SOURCECHECK = 10
++IPV6CTL_SOURCECHECK_LOGINT = 11
++IPV6CTL_ACCEPT_RTADV = 12
++IPV6CTL_KEEPFAITH = 13
++IPV6CTL_LOG_INTERVAL = 14
++IPV6CTL_HDRNESTLIMIT = 15
++IPV6CTL_DAD_COUNT = 16
++IPV6CTL_AUTO_FLOWLABEL = 17
++IPV6CTL_DEFMCASTHLIM = 18
++IPV6CTL_GIF_HLIM = 19
++IPV6CTL_KAME_VERSION = 20
++IPV6CTL_USE_DEPRECATED = 21
++IPV6CTL_RR_PRUNE = 22
++IPV6CTL_V6ONLY = 24
++IPV6CTL_RTEXPIRE = 25
++IPV6CTL_RTMINEXPIRE = 26
++IPV6CTL_RTMAXCACHE = 27
++IPV6CTL_USETEMPADDR = 32
++IPV6CTL_TEMPPLTIME = 33
++IPV6CTL_TEMPVLTIME = 34
++IPV6CTL_AUTO_LINKLOCAL = 35
++IPV6CTL_RIP6STATS = 36
++IPV6CTL_PREFER_TEMPADDR = 37
++IPV6CTL_ADDRCTLPOLICY = 38
++IPV6CTL_USE_DEFAULTZONE = 39
++IPV6CTL_MAXFRAGS = 41
++IPV6CTL_MCAST_PMTU = 44
++IPV6CTL_STEALTH = 45
++ICMPV6CTL_ND6_ONLINKNSRFC4861 = 47
++IPV6CTL_MAXID = 48
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def htobe16(x): return __bswap_16 (x)
++
++def htole16(x): return (x)
++
++def be16toh(x): return __bswap_16 (x)
++
++def le16toh(x): return (x)
++
++def htobe32(x): return __bswap_32 (x)
++
++def htole32(x): return (x)
++
++def be32toh(x): return __bswap_32 (x)
++
++def le32toh(x): return (x)
++
++def htobe64(x): return __bswap_64 (x)
++
++def htole64(x): return (x)
++
++def be64toh(x): return __bswap_64 (x)
++
++def le64toh(x): return (x)
++
++def htobe16(x): return (x)
++
++def htole16(x): return __bswap_16 (x)
++
++def be16toh(x): return (x)
++
++def le16toh(x): return __bswap_16 (x)
++
++def htobe32(x): return (x)
++
++def htole32(x): return __bswap_32 (x)
++
++def be32toh(x): return (x)
++
++def le32toh(x): return __bswap_32 (x)
++
++def htobe64(x): return (x)
++
++def htole64(x): return __bswap_64 (x)
++
++def be64toh(x): return (x)
++
++def le64toh(x): return __bswap_64 (x)
++
++def ntohl(x): return (x)
++
++def ntohs(x): return (x)
++
++def htonl(x): return (x)
++
++def htons(x): return (x)
++
++def ntohl(x): return __bswap_32 (x)
++
++def ntohs(x): return __bswap_16 (x)
++
++def htonl(x): return __bswap_32 (x)
++
++def htons(x): return __bswap_16 (x)
++
++def IN6_IS_ADDR_UNSPECIFIED(a): return \
++
++def IN6_IS_ADDR_LOOPBACK(a): return \
++
++def IN6_IS_ADDR_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_V4MAPPED(a): return \
++
++def IN6_IS_ADDR_V4COMPAT(a): return \
++
++def IN6_IS_ADDR_MC_NODELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_GLOBAL(a): return \
++
+diff --git a/lib-python/2.7/plat-gnukfreebsd10/TYPES.py b/lib-python/2.7/plat-gnukfreebsd10/TYPES.py
+new file mode 100644
+index 0000000..4132c8f
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd10/TYPES.py
+@@ -0,0 +1,303 @@
++# Generated by h2py from /usr/include/sys/types.h
++_SYS_TYPES_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__S32_TYPE = int
++__SWORD_TYPE = int
++__SLONG32_TYPE = int
++
++# Included from bits/typesizes.h
++_BITS_TYPESIZES_H = 1
++__PID_T_TYPE = __S32_TYPE
++__CLOCK_T_TYPE = __S32_TYPE
++__SWBLK_T_TYPE = __S32_TYPE
++__CLOCKID_T_TYPE = __S32_TYPE
++__TIMER_T_TYPE = __S32_TYPE
++__SSIZE_T_TYPE = __SWORD_TYPE
++__FD_SETSIZE = 1024
++
++# Included from time.h
++_TIME_H = 1
++
++# Included from bits/time.h
++_BITS_TIME_H = 1
++CLOCKS_PER_SEC = 1000000l
++CLK_TCK = 128
++CLOCK_REALTIME = 0
++CLOCK_PROCESS_CPUTIME_ID = 2
++CLOCK_THREAD_CPUTIME_ID = 3
++CLOCK_MONOTONIC = 4
++CLOCK_VIRTUAL = 1
++CLOCK_PROF = 2
++CLOCK_UPTIME = 5
++CLOCK_UPTIME_PRECISE = 7
++CLOCK_UPTIME_FAST = 8
++CLOCK_REALTIME_PRECISE = 9
++CLOCK_REALTIME_FAST = 10
++CLOCK_MONOTONIC_PRECISE = 11
++CLOCK_MONOTONIC_FAST = 12
++CLOCK_SECOND = 13
++TIMER_RELTIME = 0
++TIMER_ABSTIME = 1
++_STRUCT_TIMEVAL = 1
++CLK_TCK = CLOCKS_PER_SEC
++__clock_t_defined = 1
++__time_t_defined = 1
++__clockid_t_defined = 1
++__timer_t_defined = 1
++__timespec_defined = 1
++
++# Included from xlocale.h
++_XLOCALE_H = 1
++def __isleap(year): return \
++
++__BIT_TYPES_DEFINED__ = 1
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def htobe16(x): return __bswap_16 (x)
++
++def htole16(x): return (x)
++
++def be16toh(x): return __bswap_16 (x)
++
++def le16toh(x): return (x)
++
++def htobe32(x): return __bswap_32 (x)
++
++def htole32(x): return (x)
++
++def be32toh(x): return __bswap_32 (x)
++
++def le32toh(x): return (x)
++
++def htobe64(x): return __bswap_64 (x)
++
++def htole64(x): return (x)
++
++def be64toh(x): return __bswap_64 (x)
++
++def le64toh(x): return (x)
++
++def htobe16(x): return (x)
++
++def htole16(x): return __bswap_16 (x)
++
++def be16toh(x): return (x)
++
++def le16toh(x): return __bswap_16 (x)
++
++def htobe32(x): return (x)
++
++def htole32(x): return __bswap_32 (x)
++
++def be32toh(x): return (x)
++
++def le32toh(x): return __bswap_32 (x)
++
++def htobe64(x): return (x)
++
++def htole64(x): return __bswap_64 (x)
++
++def be64toh(x): return (x)
++
++def le64toh(x): return __bswap_64 (x)
++
++
++# Included from sys/select.h
++_SYS_SELECT_H = 1
++
++# Included from bits/select.h
++def __FD_ZERO(fdsp): return \
++
++def __FD_ZERO(set): return \
++
++
++# Included from bits/sigset.h
++_SIGSET_H_types = 1
++_SIGSET_H_fns = 1
++def __sigword(sig): return (((sig) - 1) >> 5)
++
++def __sigemptyset(set): return \
++
++def __sigfillset(set): return \
++
++def __sigisemptyset(set): return \
++
++def __FDELT(d): return ((d) / __NFDBITS)
++
++FD_SETSIZE = __FD_SETSIZE
++def FD_ZERO(fdsetp): return __FD_ZERO (fdsetp)
++
++
++# Included from sys/sysmacros.h
++_SYS_SYSMACROS_H = 1
++def minor(dev): return ((int)((dev) & (-65281)))
++
++def gnu_dev_major(dev): return major (dev)
++
++def gnu_dev_minor(dev): return minor (dev)
++
++
++# Included from bits/pthreadtypes.h
++_BITS_PTHREADTYPES_H = 1
++
++# Included from bits/sched.h
++SCHED_OTHER = 2
++SCHED_FIFO = 1
++SCHED_RR = 3
++CSIGNAL = 0x000000ff
++CLONE_VM = 0x00000100
++CLONE_FS = 0x00000200
++CLONE_FILES = 0x00000400
++CLONE_SIGHAND = 0x00000800
++CLONE_PTRACE = 0x00002000
++CLONE_VFORK = 0x00004000
++CLONE_SYSVSEM = 0x00040000
++__defined_schedparam = 1
++__CPU_SETSIZE = 128
++def __CPUELT(cpu): return ((cpu) / __NCPUBITS)
++
++def __CPU_ALLOC_SIZE(count): return \
++
++def __CPU_ALLOC(count): return __sched_cpualloc (count)
++
++def __CPU_FREE(cpuset): return __sched_cpufree (cpuset)
++
+diff --git a/lib-python/2.7/plat-gnukfreebsd11/DLFCN.py b/lib-python/2.7/plat-gnukfreebsd11/DLFCN.py
+new file mode 100644
+index 0000000..d020fe1
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd11/DLFCN.py
+@@ -0,0 +1,118 @@
++# Generated by h2py from /usr/include/dlfcn.h
++_DLFCN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from bits/dlfcn.h
++RTLD_LAZY = 0x00001
++RTLD_NOW = 0x00002
++RTLD_BINDING_MASK = 0x3
++RTLD_NOLOAD = 0x00004
++RTLD_DEEPBIND = 0x00008
++RTLD_GLOBAL = 0x00100
++RTLD_LOCAL = 0
++RTLD_NODELETE = 0x01000
++LM_ID_BASE = 0
++LM_ID_NEWLM = -1
+diff --git a/lib-python/2.7/plat-gnukfreebsd11/IN.py b/lib-python/2.7/plat-gnukfreebsd11/IN.py
+new file mode 100644
+index 0000000..7e5f845
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd11/IN.py
+@@ -0,0 +1,809 @@
++# Generated by h2py from /usr/include/netinet/in.h
++_NETINET_IN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from stdint.h
++_STDINT_H = 1
++
++# Included from bits/wchar.h
++_BITS_WCHAR_H = 1
++__WCHAR_MAX = (2147483647)
++__WCHAR_MIN = (-__WCHAR_MAX - 1)
++def __INT64_C(c): return c ## L
++
++def __UINT64_C(c): return c ## UL
++
++def __INT64_C(c): return c ## LL
++
++def __UINT64_C(c): return c ## ULL
++
++INT8_MIN = (-128)
++INT16_MIN = (-32767-1)
++INT32_MIN = (-2147483647-1)
++INT64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT8_MAX = (127)
++INT16_MAX = (32767)
++INT32_MAX = (2147483647)
++INT64_MAX = (__INT64_C(9223372036854775807))
++UINT8_MAX = (255)
++UINT16_MAX = (65535)
++UINT64_MAX = (__UINT64_C(18446744073709551615))
++INT_LEAST8_MIN = (-128)
++INT_LEAST16_MIN = (-32767-1)
++INT_LEAST32_MIN = (-2147483647-1)
++INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_LEAST8_MAX = (127)
++INT_LEAST16_MAX = (32767)
++INT_LEAST32_MAX = (2147483647)
++INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_LEAST8_MAX = (255)
++UINT_LEAST16_MAX = (65535)
++UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
++INT_FAST8_MIN = (-128)
++INT_FAST16_MIN = (-9223372036854775807L-1)
++INT_FAST32_MIN = (-9223372036854775807L-1)
++INT_FAST16_MIN = (-2147483647-1)
++INT_FAST32_MIN = (-2147483647-1)
++INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_FAST8_MAX = (127)
++INT_FAST16_MAX = (9223372036854775807L)
++INT_FAST32_MAX = (9223372036854775807L)
++INT_FAST16_MAX = (2147483647)
++INT_FAST32_MAX = (2147483647)
++INT_FAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_FAST8_MAX = (255)
++UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
++INTPTR_MIN = (-9223372036854775807L-1)
++INTPTR_MAX = (9223372036854775807L)
++INTPTR_MIN = (-2147483647-1)
++INTPTR_MAX = (2147483647)
++INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
++INTMAX_MAX = (__INT64_C(9223372036854775807))
++UINTMAX_MAX = (__UINT64_C(18446744073709551615))
++PTRDIFF_MIN = (-9223372036854775807L-1)
++PTRDIFF_MAX = (9223372036854775807L)
++PTRDIFF_MIN = (-2147483647-1)
++PTRDIFF_MAX = (2147483647)
++SIG_ATOMIC_MIN = (-2147483647-1)
++SIG_ATOMIC_MAX = (2147483647)
++WCHAR_MIN = __WCHAR_MIN
++WCHAR_MAX = __WCHAR_MAX
++def INT8_C(c): return c
++
++def INT16_C(c): return c
++
++def INT32_C(c): return c
++
++def INT64_C(c): return c ## L
++
++def INT64_C(c): return c ## LL
++
++def UINT8_C(c): return c
++
++def UINT16_C(c): return c
++
++def UINT32_C(c): return c ## U
++
++def UINT64_C(c): return c ## UL
++
++def UINT64_C(c): return c ## ULL
++
++def INTMAX_C(c): return c ## L
++
++def UINTMAX_C(c): return c ## UL
++
++def INTMAX_C(c): return c ## LL
++
++def UINTMAX_C(c): return c ## ULL
++
++
++# Included from sys/socket.h
++_SYS_SOCKET_H = 1
++
++# Included from sys/uio.h
++_SYS_UIO_H = 1
++from TYPES import *
++
++# Included from bits/uio.h
++_BITS_UIO_H = 1
++from TYPES import *
++UIO_MAXIOV = 1024
++
++# Included from bits/sigset.h
++_SIGSET_H_types = 1
++_SIGSET_H_fns = 1
++def __sigword(sig): return (((sig) - 1) >> 5)
++
++def __sigemptyset(set): return \
++
++def __sigfillset(set): return \
++
++def __sigisemptyset(set): return \
++
++
++# Included from bits/socket.h
++__BITS_SOCKET_H = 1
++
++# Included from limits.h
++_LIBC_LIMITS_H_ = 1
++MB_LEN_MAX = 16
++_LIMITS_H = 1
++CHAR_BIT = 8
++SCHAR_MIN = (-128)
++SCHAR_MAX = 127
++UCHAR_MAX = 255
++CHAR_MIN = 0
++CHAR_MAX = UCHAR_MAX
++CHAR_MIN = SCHAR_MIN
++CHAR_MAX = SCHAR_MAX
++SHRT_MIN = (-32768)
++SHRT_MAX = 32767
++USHRT_MAX = 65535
++INT_MAX = 2147483647
++LONG_MAX = 9223372036854775807L
++LONG_MAX = 2147483647L
++LONG_MIN = (-LONG_MAX - 1L)
++
++# Included from bits/posix1_lim.h
++_BITS_POSIX1_LIM_H = 1
++_POSIX_AIO_LISTIO_MAX = 2
++_POSIX_AIO_MAX = 1
++_POSIX_ARG_MAX = 4096
++_POSIX_CHILD_MAX = 25
++_POSIX_CHILD_MAX = 6
++_POSIX_DELAYTIMER_MAX = 32
++_POSIX_HOST_NAME_MAX = 255
++_POSIX_LINK_MAX = 8
++_POSIX_LOGIN_NAME_MAX = 9
++_POSIX_MAX_CANON = 255
++_POSIX_MAX_INPUT = 255
++_POSIX_MQ_OPEN_MAX = 8
++_POSIX_MQ_PRIO_MAX = 32
++_POSIX_NAME_MAX = 14
++_POSIX_NGROUPS_MAX = 8
++_POSIX_NGROUPS_MAX = 0
++_POSIX_OPEN_MAX = 20
++_POSIX_OPEN_MAX = 16
++_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
++_POSIX_PATH_MAX = 256
++_POSIX_PIPE_BUF = 512
++_POSIX_RE_DUP_MAX = 255
++_POSIX_RTSIG_MAX = 8
++_POSIX_SEM_NSEMS_MAX = 256
++_POSIX_SEM_VALUE_MAX = 32767
++_POSIX_SIGQUEUE_MAX = 32
++_POSIX_SSIZE_MAX = 32767
++_POSIX_STREAM_MAX = 8
++_POSIX_SYMLINK_MAX = 255
++_POSIX_SYMLOOP_MAX = 8
++_POSIX_TIMER_MAX = 32
++_POSIX_TTY_NAME_MAX = 9
++_POSIX_TZNAME_MAX = 6
++_POSIX_QLIMIT = 1
++_POSIX_HIWAT = _POSIX_PIPE_BUF
++_POSIX_UIO_MAXIOV = 16
++_POSIX_CLOCKRES_MIN = 20000000
++
++# Included from bits/local_lim.h
++
++# Included from sys/syslimits.h
++ARG_MAX = 262144
++CHILD_MAX = 40
++LINK_MAX = 32767
++MAX_CANON = 255
++MAX_INPUT = 255
++NAME_MAX = 255
++NGROUPS_MAX = 1023
++OPEN_MAX = 64
++PATH_MAX = 1024
++PIPE_BUF = 512
++IOV_MAX = 1024
++_POSIX_THREAD_KEYS_MAX = 128
++PTHREAD_KEYS_MAX = 1024
++_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
++PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++_POSIX_THREAD_THREADS_MAX = 64
++PTHREAD_THREADS_MAX = 1024
++AIO_PRIO_DELTA_MAX = 20
++PTHREAD_STACK_MIN = 16384
++TIMER_MAX = 256
++DELAYTIMER_MAX = 2147483647
++SSIZE_MAX = LONG_MAX
++NGROUPS_MAX = 8
++
++# Included from bits/posix2_lim.h
++_BITS_POSIX2_LIM_H = 1
++_POSIX2_BC_BASE_MAX = 99
++_POSIX2_BC_DIM_MAX = 2048
++_POSIX2_BC_SCALE_MAX = 99
++_POSIX2_BC_STRING_MAX = 1000
++_POSIX2_COLL_WEIGHTS_MAX = 2
++_POSIX2_EXPR_NEST_MAX = 32
++_POSIX2_LINE_MAX = 2048
++_POSIX2_RE_DUP_MAX = 255
++_POSIX2_CHARCLASS_NAME_MAX = 14
++BC_BASE_MAX = _POSIX2_BC_BASE_MAX
++BC_DIM_MAX = _POSIX2_BC_DIM_MAX
++BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
++BC_STRING_MAX = _POSIX2_BC_STRING_MAX
++COLL_WEIGHTS_MAX = 255
++EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
++LINE_MAX = _POSIX2_LINE_MAX
++CHARCLASS_NAME_MAX = 2048
++RE_DUP_MAX = (0x7fff)
++
++# Included from bits/xopen_lim.h
++_XOPEN_LIM_H = 1
++
++# Included from bits/stdio_lim.h
++L_tmpnam = 20
++TMP_MAX = 238328
++FILENAME_MAX = 1024
++L_ctermid = 9
++L_cuserid = 9
++FOPEN_MAX = 64
++IOV_MAX = 1024
++_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
++NL_ARGMAX = _POSIX_ARG_MAX
++NL_LANGMAX = _POSIX2_LINE_MAX
++NL_MSGMAX = INT_MAX
++NL_NMAX = INT_MAX
++NL_SETMAX = INT_MAX
++NL_TEXTMAX = INT_MAX
++NZERO = 20
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 32
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 64
++LONG_BIT = 32
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__S32_TYPE = int
++__SWORD_TYPE = int
++__SLONG32_TYPE = int
++
++# Included from bits/typesizes.h
++_BITS_TYPESIZES_H = 1
++__PID_T_TYPE = __S32_TYPE
++__CLOCK_T_TYPE = __S32_TYPE
++__SWBLK_T_TYPE = __S32_TYPE
++__CLOCKID_T_TYPE = __S32_TYPE
++__TIMER_T_TYPE = __S32_TYPE
++__SSIZE_T_TYPE = __SWORD_TYPE
++__FD_SETSIZE = 1024
++PF_UNSPEC = 0
++PF_LOCAL = 1
++PF_UNIX = PF_LOCAL
++PF_FILE = PF_LOCAL
++PF_INET = 2
++PF_IMPLINK = 3
++PF_PUP = 4
++PF_CHAOS = 5
++PF_NS = 6
++PF_ISO = 7
++PF_OSI = PF_ISO
++PF_ECMA = 8
++PF_DATAKIT = 9
++PF_CCITT = 10
++PF_SNA = 11
++PF_DECnet = 12
++PF_DLI = 13
++PF_LAT = 14
++PF_HYLINK = 15
++PF_APPLETALK = 16
++PF_ROUTE = 17
++PF_LINK = 18
++PF_XTP = 19
++PF_COIP = 20
++PF_CNT = 21
++PF_RTIP = 22
++PF_IPX = 23
++PF_SIP = 24
++PF_PIP = 25
++PF_ISDN = 26
++PF_KEY = 27
++PF_INET6 = 28
++PF_NATM = 29
++PF_ATM = 30
++PF_HDRCMPLT = 31
++PF_NETGRAPH = 32
++PF_MAX = 33
++AF_UNSPEC = PF_UNSPEC
++AF_LOCAL = PF_LOCAL
++AF_UNIX = PF_UNIX
++AF_FILE = PF_FILE
++AF_INET = PF_INET
++AF_IMPLINK = PF_IMPLINK
++AF_PUP = PF_PUP
++AF_CHAOS = PF_CHAOS
++AF_NS = PF_NS
++AF_ISO = PF_ISO
++AF_OSI = PF_OSI
++AF_ECMA = PF_ECMA
++AF_DATAKIT = PF_DATAKIT
++AF_CCITT = PF_CCITT
++AF_SNA = PF_SNA
++AF_DECnet = PF_DECnet
++AF_DLI = PF_DLI
++AF_LAT = PF_LAT
++AF_HYLINK = PF_HYLINK
++AF_APPLETALK = PF_APPLETALK
++AF_ROUTE = PF_ROUTE
++AF_LINK = PF_LINK
++pseudo_AF_XTP = PF_XTP
++AF_COIP = PF_COIP
++AF_CNT = PF_CNT
++pseudo_AF_RTIP = PF_RTIP
++AF_IPX = PF_IPX
++AF_SIP = PF_SIP
++pseudo_AF_PIP = PF_PIP
++AF_ISDN = PF_ISDN
++AF_E164 = AF_ISDN
++pseudo_AF_KEY = PF_KEY
++AF_INET6 = PF_INET6
++AF_NATM = PF_NATM
++AF_ATM = PF_ATM
++pseudo_AF_HDRCMPLT = PF_HDRCMPLT
++AF_NETGRAPH = PF_NETGRAPH
++AF_MAX = PF_MAX
++SOMAXCONN = 128
++
++# Included from bits/sockaddr.h
++_BITS_SOCKADDR_H = 1
++def __SOCKADDR_COMMON(sa_prefix): return \
++
++_HAVE_SA_LEN = 1
++_SS_SIZE = 128
++def CMSG_FIRSTHDR(mhdr): return \
++
++CMGROUP_MAX = 16
++SOL_SOCKET = 0xffff
++LOCAL_PEERCRED = 0x001
++LOCAL_CREDS = 0x002
++LOCAL_CONNWAIT = 0x004
++
++# Included from bits/socket2.h
++def IN_CLASSA(a): return ((((in_addr_t)(a)) & (-2147483648)) == 0)
++
++IN_CLASSA_NET = (-16777216)
++IN_CLASSA_NSHIFT = 24
++IN_CLASSA_HOST = ((-1) & ~IN_CLASSA_NET)
++IN_CLASSA_MAX = 128
++def IN_CLASSB(a): return ((((in_addr_t)(a)) & (-1073741824)) == (-2147483648))
++
++IN_CLASSB_NET = (-65536)
++IN_CLASSB_NSHIFT = 16
++IN_CLASSB_HOST = ((-1) & ~IN_CLASSB_NET)
++IN_CLASSB_MAX = 65536
++def IN_CLASSC(a): return ((((in_addr_t)(a)) & (-536870912)) == (-1073741824))
++
++IN_CLASSC_NET = (-256)
++IN_CLASSC_NSHIFT = 8
++IN_CLASSC_HOST = ((-1) & ~IN_CLASSC_NET)
++def IN_CLASSD(a): return ((((in_addr_t)(a)) & (-268435456)) == (-536870912))
++
++def IN_MULTICAST(a): return IN_CLASSD(a)
++
++def IN_EXPERIMENTAL(a): return ((((in_addr_t)(a)) & (-536870912)) == (-536870912))
++
++def IN_BADCLASS(a): return ((((in_addr_t)(a)) & (-268435456)) == (-268435456))
++
++IN_LOOPBACKNET = 127
++INET_ADDRSTRLEN = 16
++INET6_ADDRSTRLEN = 46
++
++# Included from bits/in.h
++IMPLINK_IP = 155
++IMPLINK_LOWEXPER = 156
++IMPLINK_HIGHEXPER = 158
++IPPROTO_DIVERT = 258
++SOL_IP = 0
++IP_OPTIONS = 1
++IP_HDRINCL = 2
++IP_TOS = 3
++IP_TTL = 4
++IP_RECVOPTS = 5
++IP_RECVRETOPTS = 6
++IP_RECVDSTADDR = 7
++IP_SENDSRCADDR = IP_RECVDSTADDR
++IP_RETOPTS = 8
++IP_MULTICAST_IF = 9
++IP_MULTICAST_TTL = 10
++IP_MULTICAST_LOOP = 11
++IP_ADD_MEMBERSHIP = 12
++IP_DROP_MEMBERSHIP = 13
++IP_MULTICAST_VIF = 14
++IP_RSVP_ON = 15
++IP_RSVP_OFF = 16
++IP_RSVP_VIF_ON = 17
++IP_RSVP_VIF_OFF = 18
++IP_PORTRANGE = 19
++IP_RECVIF = 20
++IP_IPSEC_POLICY = 21
++IP_FAITH = 22
++IP_ONESBCAST = 23
++IP_NONLOCALOK = 24
++IP_FW_TABLE_ADD = 40
++IP_FW_TABLE_DEL = 41
++IP_FW_TABLE_FLUSH = 42
++IP_FW_TABLE_GETSIZE = 43
++IP_FW_TABLE_LIST = 44
++IP_FW_ADD = 50
++IP_FW_DEL = 51
++IP_FW_FLUSH = 52
++IP_FW_ZERO = 53
++IP_FW_GET = 54
++IP_FW_RESETLOG = 55
++IP_FW_NAT_CFG = 56
++IP_FW_NAT_DEL = 57
++IP_FW_NAT_GET_CONFIG = 58
++IP_FW_NAT_GET_LOG = 59
++IP_DUMMYNET_CONFIGURE = 60
++IP_DUMMYNET_DEL = 61
++IP_DUMMYNET_FLUSH = 62
++IP_DUMMYNET_GET = 64
++IP_RECVTTL = 65
++IP_MINTTL = 66
++IP_DONTFRAG = 67
++IP_ADD_SOURCE_MEMBERSHIP = 70
++IP_DROP_SOURCE_MEMBERSHIP = 71
++IP_BLOCK_SOURCE = 72
++IP_UNBLOCK_SOURCE = 73
++IP_MSFILTER = 74
++MCAST_JOIN_GROUP = 80
++MCAST_LEAVE_GROUP = 81
++MCAST_JOIN_SOURCE_GROUP = 82
++MCAST_LEAVE_SOURCE_GROUP = 83
++MCAST_BLOCK_SOURCE = 84
++MCAST_UNBLOCK_SOURCE = 85
++IP_DEFAULT_MULTICAST_TTL = 1
++IP_DEFAULT_MULTICAST_LOOP = 1
++IP_MIN_MEMBERSHIPS = 31
++IP_MAX_MEMBERSHIPS = 4095
++IP_MAX_SOURCE_FILTER = 1024
++MCAST_UNDEFINED = 0
++MCAST_INCLUDE = 1
++MCAST_EXCLUDE = 2
++IP_PORTRANGE_DEFAULT = 0
++IP_PORTRANGE_HIGH = 1
++IP_PORTRANGE_LOW = 2
++IPCTL_FORWARDING = 1
++IPCTL_SENDREDIRECTS = 2
++IPCTL_DEFTTL = 3
++IPCTL_DEFMTU = 4
++IPCTL_RTEXPIRE = 5
++IPCTL_RTMINEXPIRE = 6
++IPCTL_RTMAXCACHE = 7
++IPCTL_SOURCEROUTE = 8
++IPCTL_DIRECTEDBROADCAST = 9
++IPCTL_INTRQMAXLEN = 10
++IPCTL_INTRQDROPS = 11
++IPCTL_STATS = 12
++IPCTL_ACCEPTSOURCEROUTE = 13
++IPCTL_FASTFORWARDING = 14
++IPCTL_KEEPFAITH = 15
++IPCTL_GIF_TTL = 16
++IPCTL_MAXID = 17
++IPV6_SOCKOPT_RESERVED1 = 3
++IPV6_UNICAST_HOPS = 4
++IPV6_MULTICAST_IF = 9
++IPV6_MULTICAST_HOPS = 10
++IPV6_MULTICAST_LOOP = 11
++IPV6_JOIN_GROUP = 12
++IPV6_LEAVE_GROUP = 13
++IPV6_PORTRANGE = 14
++ICMP6_FILTER = 18
++IPV6_CHECKSUM = 26
++IPV6_V6ONLY = 27
++IPV6_IPSEC_POLICY = 28
++IPV6_FAITH = 29
++IPV6_FW_ADD = 30
++IPV6_FW_DEL = 31
++IPV6_FW_FLUSH = 32
++IPV6_FW_ZERO = 33
++IPV6_FW_GET = 34
++IPV6_RTHDRDSTOPTS = 35
++IPV6_RECVPKTINFO = 36
++IPV6_RECVHOPLIMIT = 37
++IPV6_RECVRTHDR = 38
++IPV6_RECVHOPOPTS = 39
++IPV6_RECVDSTOPTS = 40
++IPV6_USE_MIN_MTU = 42
++IPV6_RECVPATHMTU = 43
++IPV6_PATHMTU = 44
++IPV6_PKTINFO = 46
++IPV6_HOPLIMIT = 47
++IPV6_NEXTHOP = 48
++IPV6_HOPOPTS = 49
++IPV6_DSTOPTS = 50
++IPV6_RTHDR = 51
++IPV6_RECVTCLASS = 57
++IPV6_AUTOFLOWLABEL = 59
++IPV6_TCLASS = 61
++IPV6_DONTFRAG = 62
++IPV6_PREFER_TEMPADDR = 63
++IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP
++IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP
++IPV6_RXHOPOPTS = IPV6_HOPOPTS
++IPV6_RXDSTOPTS = IPV6_DSTOPTS
++SOL_IPV6 = 41
++SOL_ICMPV6 = 58
++IPV6_DEFAULT_MULTICAST_HOPS = 1
++IPV6_DEFAULT_MULTICAST_LOOP = 1
++IPV6_PORTRANGE_DEFAULT = 0
++IPV6_PORTRANGE_HIGH = 1
++IPV6_PORTRANGE_LOW = 2
++IPV6_RTHDR_LOOSE = 0
++IPV6_RTHDR_STRICT = 1
++IPV6_RTHDR_TYPE_0 = 0
++IPV6CTL_FORWARDING = 1
++IPV6CTL_SENDREDIRECTS = 2
++IPV6CTL_DEFHLIM = 3
++IPV6CTL_FORWSRCRT = 5
++IPV6CTL_STATS = 6
++IPV6CTL_MRTSTATS = 7
++IPV6CTL_MRTPROTO = 8
++IPV6CTL_MAXFRAGPACKETS = 9
++IPV6CTL_SOURCECHECK = 10
++IPV6CTL_SOURCECHECK_LOGINT = 11
++IPV6CTL_ACCEPT_RTADV = 12
++IPV6CTL_KEEPFAITH = 13
++IPV6CTL_LOG_INTERVAL = 14
++IPV6CTL_HDRNESTLIMIT = 15
++IPV6CTL_DAD_COUNT = 16
++IPV6CTL_AUTO_FLOWLABEL = 17
++IPV6CTL_DEFMCASTHLIM = 18
++IPV6CTL_GIF_HLIM = 19
++IPV6CTL_KAME_VERSION = 20
++IPV6CTL_USE_DEPRECATED = 21
++IPV6CTL_RR_PRUNE = 22
++IPV6CTL_V6ONLY = 24
++IPV6CTL_RTEXPIRE = 25
++IPV6CTL_RTMINEXPIRE = 26
++IPV6CTL_RTMAXCACHE = 27
++IPV6CTL_USETEMPADDR = 32
++IPV6CTL_TEMPPLTIME = 33
++IPV6CTL_TEMPVLTIME = 34
++IPV6CTL_AUTO_LINKLOCAL = 35
++IPV6CTL_RIP6STATS = 36
++IPV6CTL_PREFER_TEMPADDR = 37
++IPV6CTL_ADDRCTLPOLICY = 38
++IPV6CTL_USE_DEFAULTZONE = 39
++IPV6CTL_MAXFRAGS = 41
++IPV6CTL_MCAST_PMTU = 44
++IPV6CTL_STEALTH = 45
++ICMPV6CTL_ND6_ONLINKNSRFC4861 = 47
++IPV6CTL_MAXID = 48
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def htobe16(x): return __bswap_16 (x)
++
++def htole16(x): return (x)
++
++def be16toh(x): return __bswap_16 (x)
++
++def le16toh(x): return (x)
++
++def htobe32(x): return __bswap_32 (x)
++
++def htole32(x): return (x)
++
++def be32toh(x): return __bswap_32 (x)
++
++def le32toh(x): return (x)
++
++def htobe64(x): return __bswap_64 (x)
++
++def htole64(x): return (x)
++
++def be64toh(x): return __bswap_64 (x)
++
++def le64toh(x): return (x)
++
++def htobe16(x): return (x)
++
++def htole16(x): return __bswap_16 (x)
++
++def be16toh(x): return (x)
++
++def le16toh(x): return __bswap_16 (x)
++
++def htobe32(x): return (x)
++
++def htole32(x): return __bswap_32 (x)
++
++def be32toh(x): return (x)
++
++def le32toh(x): return __bswap_32 (x)
++
++def htobe64(x): return (x)
++
++def htole64(x): return __bswap_64 (x)
++
++def be64toh(x): return (x)
++
++def le64toh(x): return __bswap_64 (x)
++
++def ntohl(x): return (x)
++
++def ntohs(x): return (x)
++
++def htonl(x): return (x)
++
++def htons(x): return (x)
++
++def ntohl(x): return __bswap_32 (x)
++
++def ntohs(x): return __bswap_16 (x)
++
++def htonl(x): return __bswap_32 (x)
++
++def htons(x): return __bswap_16 (x)
++
++def IN6_IS_ADDR_UNSPECIFIED(a): return \
++
++def IN6_IS_ADDR_LOOPBACK(a): return \
++
++def IN6_IS_ADDR_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_V4MAPPED(a): return \
++
++def IN6_IS_ADDR_V4COMPAT(a): return \
++
++def IN6_IS_ADDR_MC_NODELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_GLOBAL(a): return \
++
+diff --git a/lib-python/2.7/plat-gnukfreebsd11/TYPES.py b/lib-python/2.7/plat-gnukfreebsd11/TYPES.py
+new file mode 100644
+index 0000000..4132c8f
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd11/TYPES.py
+@@ -0,0 +1,303 @@
++# Generated by h2py from /usr/include/sys/types.h
++_SYS_TYPES_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__S32_TYPE = int
++__SWORD_TYPE = int
++__SLONG32_TYPE = int
++
++# Included from bits/typesizes.h
++_BITS_TYPESIZES_H = 1
++__PID_T_TYPE = __S32_TYPE
++__CLOCK_T_TYPE = __S32_TYPE
++__SWBLK_T_TYPE = __S32_TYPE
++__CLOCKID_T_TYPE = __S32_TYPE
++__TIMER_T_TYPE = __S32_TYPE
++__SSIZE_T_TYPE = __SWORD_TYPE
++__FD_SETSIZE = 1024
++
++# Included from time.h
++_TIME_H = 1
++
++# Included from bits/time.h
++_BITS_TIME_H = 1
++CLOCKS_PER_SEC = 1000000l
++CLK_TCK = 128
++CLOCK_REALTIME = 0
++CLOCK_PROCESS_CPUTIME_ID = 2
++CLOCK_THREAD_CPUTIME_ID = 3
++CLOCK_MONOTONIC = 4
++CLOCK_VIRTUAL = 1
++CLOCK_PROF = 2
++CLOCK_UPTIME = 5
++CLOCK_UPTIME_PRECISE = 7
++CLOCK_UPTIME_FAST = 8
++CLOCK_REALTIME_PRECISE = 9
++CLOCK_REALTIME_FAST = 10
++CLOCK_MONOTONIC_PRECISE = 11
++CLOCK_MONOTONIC_FAST = 12
++CLOCK_SECOND = 13
++TIMER_RELTIME = 0
++TIMER_ABSTIME = 1
++_STRUCT_TIMEVAL = 1
++CLK_TCK = CLOCKS_PER_SEC
++__clock_t_defined = 1
++__time_t_defined = 1
++__clockid_t_defined = 1
++__timer_t_defined = 1
++__timespec_defined = 1
++
++# Included from xlocale.h
++_XLOCALE_H = 1
++def __isleap(year): return \
++
++__BIT_TYPES_DEFINED__ = 1
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def htobe16(x): return __bswap_16 (x)
++
++def htole16(x): return (x)
++
++def be16toh(x): return __bswap_16 (x)
++
++def le16toh(x): return (x)
++
++def htobe32(x): return __bswap_32 (x)
++
++def htole32(x): return (x)
++
++def be32toh(x): return __bswap_32 (x)
++
++def le32toh(x): return (x)
++
++def htobe64(x): return __bswap_64 (x)
++
++def htole64(x): return (x)
++
++def be64toh(x): return __bswap_64 (x)
++
++def le64toh(x): return (x)
++
++def htobe16(x): return (x)
++
++def htole16(x): return __bswap_16 (x)
++
++def be16toh(x): return (x)
++
++def le16toh(x): return __bswap_16 (x)
++
++def htobe32(x): return (x)
++
++def htole32(x): return __bswap_32 (x)
++
++def be32toh(x): return (x)
++
++def le32toh(x): return __bswap_32 (x)
++
++def htobe64(x): return (x)
++
++def htole64(x): return __bswap_64 (x)
++
++def be64toh(x): return (x)
++
++def le64toh(x): return __bswap_64 (x)
++
++
++# Included from sys/select.h
++_SYS_SELECT_H = 1
++
++# Included from bits/select.h
++def __FD_ZERO(fdsp): return \
++
++def __FD_ZERO(set): return \
++
++
++# Included from bits/sigset.h
++_SIGSET_H_types = 1
++_SIGSET_H_fns = 1
++def __sigword(sig): return (((sig) - 1) >> 5)
++
++def __sigemptyset(set): return \
++
++def __sigfillset(set): return \
++
++def __sigisemptyset(set): return \
++
++def __FDELT(d): return ((d) / __NFDBITS)
++
++FD_SETSIZE = __FD_SETSIZE
++def FD_ZERO(fdsetp): return __FD_ZERO (fdsetp)
++
++
++# Included from sys/sysmacros.h
++_SYS_SYSMACROS_H = 1
++def minor(dev): return ((int)((dev) & (-65281)))
++
++def gnu_dev_major(dev): return major (dev)
++
++def gnu_dev_minor(dev): return minor (dev)
++
++
++# Included from bits/pthreadtypes.h
++_BITS_PTHREADTYPES_H = 1
++
++# Included from bits/sched.h
++SCHED_OTHER = 2
++SCHED_FIFO = 1
++SCHED_RR = 3
++CSIGNAL = 0x000000ff
++CLONE_VM = 0x00000100
++CLONE_FS = 0x00000200
++CLONE_FILES = 0x00000400
++CLONE_SIGHAND = 0x00000800
++CLONE_PTRACE = 0x00002000
++CLONE_VFORK = 0x00004000
++CLONE_SYSVSEM = 0x00040000
++__defined_schedparam = 1
++__CPU_SETSIZE = 128
++def __CPUELT(cpu): return ((cpu) / __NCPUBITS)
++
++def __CPU_ALLOC_SIZE(count): return \
++
++def __CPU_ALLOC(count): return __sched_cpualloc (count)
++
++def __CPU_FREE(cpuset): return __sched_cpufree (cpuset)
++
+diff --git a/lib-python/2.7/plat-gnukfreebsd8/DLFCN.py b/lib-python/2.7/plat-gnukfreebsd8/DLFCN.py
+new file mode 100644
+index 0000000..d020fe1
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd8/DLFCN.py
+@@ -0,0 +1,118 @@
++# Generated by h2py from /usr/include/dlfcn.h
++_DLFCN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from bits/dlfcn.h
++RTLD_LAZY = 0x00001
++RTLD_NOW = 0x00002
++RTLD_BINDING_MASK = 0x3
++RTLD_NOLOAD = 0x00004
++RTLD_DEEPBIND = 0x00008
++RTLD_GLOBAL = 0x00100
++RTLD_LOCAL = 0
++RTLD_NODELETE = 0x01000
++LM_ID_BASE = 0
++LM_ID_NEWLM = -1
+diff --git a/lib-python/2.7/plat-gnukfreebsd8/IN.py b/lib-python/2.7/plat-gnukfreebsd8/IN.py
+new file mode 100644
+index 0000000..7e5f845
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd8/IN.py
+@@ -0,0 +1,809 @@
++# Generated by h2py from /usr/include/netinet/in.h
++_NETINET_IN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from stdint.h
++_STDINT_H = 1
++
++# Included from bits/wchar.h
++_BITS_WCHAR_H = 1
++__WCHAR_MAX = (2147483647)
++__WCHAR_MIN = (-__WCHAR_MAX - 1)
++def __INT64_C(c): return c ## L
++
++def __UINT64_C(c): return c ## UL
++
++def __INT64_C(c): return c ## LL
++
++def __UINT64_C(c): return c ## ULL
++
++INT8_MIN = (-128)
++INT16_MIN = (-32767-1)
++INT32_MIN = (-2147483647-1)
++INT64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT8_MAX = (127)
++INT16_MAX = (32767)
++INT32_MAX = (2147483647)
++INT64_MAX = (__INT64_C(9223372036854775807))
++UINT8_MAX = (255)
++UINT16_MAX = (65535)
++UINT64_MAX = (__UINT64_C(18446744073709551615))
++INT_LEAST8_MIN = (-128)
++INT_LEAST16_MIN = (-32767-1)
++INT_LEAST32_MIN = (-2147483647-1)
++INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_LEAST8_MAX = (127)
++INT_LEAST16_MAX = (32767)
++INT_LEAST32_MAX = (2147483647)
++INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_LEAST8_MAX = (255)
++UINT_LEAST16_MAX = (65535)
++UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
++INT_FAST8_MIN = (-128)
++INT_FAST16_MIN = (-9223372036854775807L-1)
++INT_FAST32_MIN = (-9223372036854775807L-1)
++INT_FAST16_MIN = (-2147483647-1)
++INT_FAST32_MIN = (-2147483647-1)
++INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_FAST8_MAX = (127)
++INT_FAST16_MAX = (9223372036854775807L)
++INT_FAST32_MAX = (9223372036854775807L)
++INT_FAST16_MAX = (2147483647)
++INT_FAST32_MAX = (2147483647)
++INT_FAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_FAST8_MAX = (255)
++UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
++INTPTR_MIN = (-9223372036854775807L-1)
++INTPTR_MAX = (9223372036854775807L)
++INTPTR_MIN = (-2147483647-1)
++INTPTR_MAX = (2147483647)
++INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
++INTMAX_MAX = (__INT64_C(9223372036854775807))
++UINTMAX_MAX = (__UINT64_C(18446744073709551615))
++PTRDIFF_MIN = (-9223372036854775807L-1)
++PTRDIFF_MAX = (9223372036854775807L)
++PTRDIFF_MIN = (-2147483647-1)
++PTRDIFF_MAX = (2147483647)
++SIG_ATOMIC_MIN = (-2147483647-1)
++SIG_ATOMIC_MAX = (2147483647)
++WCHAR_MIN = __WCHAR_MIN
++WCHAR_MAX = __WCHAR_MAX
++def INT8_C(c): return c
++
++def INT16_C(c): return c
++
++def INT32_C(c): return c
++
++def INT64_C(c): return c ## L
++
++def INT64_C(c): return c ## LL
++
++def UINT8_C(c): return c
++
++def UINT16_C(c): return c
++
++def UINT32_C(c): return c ## U
++
++def UINT64_C(c): return c ## UL
++
++def UINT64_C(c): return c ## ULL
++
++def INTMAX_C(c): return c ## L
++
++def UINTMAX_C(c): return c ## UL
++
++def INTMAX_C(c): return c ## LL
++
++def UINTMAX_C(c): return c ## ULL
++
++
++# Included from sys/socket.h
++_SYS_SOCKET_H = 1
++
++# Included from sys/uio.h
++_SYS_UIO_H = 1
++from TYPES import *
++
++# Included from bits/uio.h
++_BITS_UIO_H = 1
++from TYPES import *
++UIO_MAXIOV = 1024
++
++# Included from bits/sigset.h
++_SIGSET_H_types = 1
++_SIGSET_H_fns = 1
++def __sigword(sig): return (((sig) - 1) >> 5)
++
++def __sigemptyset(set): return \
++
++def __sigfillset(set): return \
++
++def __sigisemptyset(set): return \
++
++
++# Included from bits/socket.h
++__BITS_SOCKET_H = 1
++
++# Included from limits.h
++_LIBC_LIMITS_H_ = 1
++MB_LEN_MAX = 16
++_LIMITS_H = 1
++CHAR_BIT = 8
++SCHAR_MIN = (-128)
++SCHAR_MAX = 127
++UCHAR_MAX = 255
++CHAR_MIN = 0
++CHAR_MAX = UCHAR_MAX
++CHAR_MIN = SCHAR_MIN
++CHAR_MAX = SCHAR_MAX
++SHRT_MIN = (-32768)
++SHRT_MAX = 32767
++USHRT_MAX = 65535
++INT_MAX = 2147483647
++LONG_MAX = 9223372036854775807L
++LONG_MAX = 2147483647L
++LONG_MIN = (-LONG_MAX - 1L)
++
++# Included from bits/posix1_lim.h
++_BITS_POSIX1_LIM_H = 1
++_POSIX_AIO_LISTIO_MAX = 2
++_POSIX_AIO_MAX = 1
++_POSIX_ARG_MAX = 4096
++_POSIX_CHILD_MAX = 25
++_POSIX_CHILD_MAX = 6
++_POSIX_DELAYTIMER_MAX = 32
++_POSIX_HOST_NAME_MAX = 255
++_POSIX_LINK_MAX = 8
++_POSIX_LOGIN_NAME_MAX = 9
++_POSIX_MAX_CANON = 255
++_POSIX_MAX_INPUT = 255
++_POSIX_MQ_OPEN_MAX = 8
++_POSIX_MQ_PRIO_MAX = 32
++_POSIX_NAME_MAX = 14
++_POSIX_NGROUPS_MAX = 8
++_POSIX_NGROUPS_MAX = 0
++_POSIX_OPEN_MAX = 20
++_POSIX_OPEN_MAX = 16
++_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
++_POSIX_PATH_MAX = 256
++_POSIX_PIPE_BUF = 512
++_POSIX_RE_DUP_MAX = 255
++_POSIX_RTSIG_MAX = 8
++_POSIX_SEM_NSEMS_MAX = 256
++_POSIX_SEM_VALUE_MAX = 32767
++_POSIX_SIGQUEUE_MAX = 32
++_POSIX_SSIZE_MAX = 32767
++_POSIX_STREAM_MAX = 8
++_POSIX_SYMLINK_MAX = 255
++_POSIX_SYMLOOP_MAX = 8
++_POSIX_TIMER_MAX = 32
++_POSIX_TTY_NAME_MAX = 9
++_POSIX_TZNAME_MAX = 6
++_POSIX_QLIMIT = 1
++_POSIX_HIWAT = _POSIX_PIPE_BUF
++_POSIX_UIO_MAXIOV = 16
++_POSIX_CLOCKRES_MIN = 20000000
++
++# Included from bits/local_lim.h
++
++# Included from sys/syslimits.h
++ARG_MAX = 262144
++CHILD_MAX = 40
++LINK_MAX = 32767
++MAX_CANON = 255
++MAX_INPUT = 255
++NAME_MAX = 255
++NGROUPS_MAX = 1023
++OPEN_MAX = 64
++PATH_MAX = 1024
++PIPE_BUF = 512
++IOV_MAX = 1024
++_POSIX_THREAD_KEYS_MAX = 128
++PTHREAD_KEYS_MAX = 1024
++_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
++PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++_POSIX_THREAD_THREADS_MAX = 64
++PTHREAD_THREADS_MAX = 1024
++AIO_PRIO_DELTA_MAX = 20
++PTHREAD_STACK_MIN = 16384
++TIMER_MAX = 256
++DELAYTIMER_MAX = 2147483647
++SSIZE_MAX = LONG_MAX
++NGROUPS_MAX = 8
++
++# Included from bits/posix2_lim.h
++_BITS_POSIX2_LIM_H = 1
++_POSIX2_BC_BASE_MAX = 99
++_POSIX2_BC_DIM_MAX = 2048
++_POSIX2_BC_SCALE_MAX = 99
++_POSIX2_BC_STRING_MAX = 1000
++_POSIX2_COLL_WEIGHTS_MAX = 2
++_POSIX2_EXPR_NEST_MAX = 32
++_POSIX2_LINE_MAX = 2048
++_POSIX2_RE_DUP_MAX = 255
++_POSIX2_CHARCLASS_NAME_MAX = 14
++BC_BASE_MAX = _POSIX2_BC_BASE_MAX
++BC_DIM_MAX = _POSIX2_BC_DIM_MAX
++BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
++BC_STRING_MAX = _POSIX2_BC_STRING_MAX
++COLL_WEIGHTS_MAX = 255
++EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
++LINE_MAX = _POSIX2_LINE_MAX
++CHARCLASS_NAME_MAX = 2048
++RE_DUP_MAX = (0x7fff)
++
++# Included from bits/xopen_lim.h
++_XOPEN_LIM_H = 1
++
++# Included from bits/stdio_lim.h
++L_tmpnam = 20
++TMP_MAX = 238328
++FILENAME_MAX = 1024
++L_ctermid = 9
++L_cuserid = 9
++FOPEN_MAX = 64
++IOV_MAX = 1024
++_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
++NL_ARGMAX = _POSIX_ARG_MAX
++NL_LANGMAX = _POSIX2_LINE_MAX
++NL_MSGMAX = INT_MAX
++NL_NMAX = INT_MAX
++NL_SETMAX = INT_MAX
++NL_TEXTMAX = INT_MAX
++NZERO = 20
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 32
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 64
++LONG_BIT = 32
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__S32_TYPE = int
++__SWORD_TYPE = int
++__SLONG32_TYPE = int
++
++# Included from bits/typesizes.h
++_BITS_TYPESIZES_H = 1
++__PID_T_TYPE = __S32_TYPE
++__CLOCK_T_TYPE = __S32_TYPE
++__SWBLK_T_TYPE = __S32_TYPE
++__CLOCKID_T_TYPE = __S32_TYPE
++__TIMER_T_TYPE = __S32_TYPE
++__SSIZE_T_TYPE = __SWORD_TYPE
++__FD_SETSIZE = 1024
++PF_UNSPEC = 0
++PF_LOCAL = 1
++PF_UNIX = PF_LOCAL
++PF_FILE = PF_LOCAL
++PF_INET = 2
++PF_IMPLINK = 3
++PF_PUP = 4
++PF_CHAOS = 5
++PF_NS = 6
++PF_ISO = 7
++PF_OSI = PF_ISO
++PF_ECMA = 8
++PF_DATAKIT = 9
++PF_CCITT = 10
++PF_SNA = 11
++PF_DECnet = 12
++PF_DLI = 13
++PF_LAT = 14
++PF_HYLINK = 15
++PF_APPLETALK = 16
++PF_ROUTE = 17
++PF_LINK = 18
++PF_XTP = 19
++PF_COIP = 20
++PF_CNT = 21
++PF_RTIP = 22
++PF_IPX = 23
++PF_SIP = 24
++PF_PIP = 25
++PF_ISDN = 26
++PF_KEY = 27
++PF_INET6 = 28
++PF_NATM = 29
++PF_ATM = 30
++PF_HDRCMPLT = 31
++PF_NETGRAPH = 32
++PF_MAX = 33
++AF_UNSPEC = PF_UNSPEC
++AF_LOCAL = PF_LOCAL
++AF_UNIX = PF_UNIX
++AF_FILE = PF_FILE
++AF_INET = PF_INET
++AF_IMPLINK = PF_IMPLINK
++AF_PUP = PF_PUP
++AF_CHAOS = PF_CHAOS
++AF_NS = PF_NS
++AF_ISO = PF_ISO
++AF_OSI = PF_OSI
++AF_ECMA = PF_ECMA
++AF_DATAKIT = PF_DATAKIT
++AF_CCITT = PF_CCITT
++AF_SNA = PF_SNA
++AF_DECnet = PF_DECnet
++AF_DLI = PF_DLI
++AF_LAT = PF_LAT
++AF_HYLINK = PF_HYLINK
++AF_APPLETALK = PF_APPLETALK
++AF_ROUTE = PF_ROUTE
++AF_LINK = PF_LINK
++pseudo_AF_XTP = PF_XTP
++AF_COIP = PF_COIP
++AF_CNT = PF_CNT
++pseudo_AF_RTIP = PF_RTIP
++AF_IPX = PF_IPX
++AF_SIP = PF_SIP
++pseudo_AF_PIP = PF_PIP
++AF_ISDN = PF_ISDN
++AF_E164 = AF_ISDN
++pseudo_AF_KEY = PF_KEY
++AF_INET6 = PF_INET6
++AF_NATM = PF_NATM
++AF_ATM = PF_ATM
++pseudo_AF_HDRCMPLT = PF_HDRCMPLT
++AF_NETGRAPH = PF_NETGRAPH
++AF_MAX = PF_MAX
++SOMAXCONN = 128
++
++# Included from bits/sockaddr.h
++_BITS_SOCKADDR_H = 1
++def __SOCKADDR_COMMON(sa_prefix): return \
++
++_HAVE_SA_LEN = 1
++_SS_SIZE = 128
++def CMSG_FIRSTHDR(mhdr): return \
++
++CMGROUP_MAX = 16
++SOL_SOCKET = 0xffff
++LOCAL_PEERCRED = 0x001
++LOCAL_CREDS = 0x002
++LOCAL_CONNWAIT = 0x004
++
++# Included from bits/socket2.h
++def IN_CLASSA(a): return ((((in_addr_t)(a)) & (-2147483648)) == 0)
++
++IN_CLASSA_NET = (-16777216)
++IN_CLASSA_NSHIFT = 24
++IN_CLASSA_HOST = ((-1) & ~IN_CLASSA_NET)
++IN_CLASSA_MAX = 128
++def IN_CLASSB(a): return ((((in_addr_t)(a)) & (-1073741824)) == (-2147483648))
++
++IN_CLASSB_NET = (-65536)
++IN_CLASSB_NSHIFT = 16
++IN_CLASSB_HOST = ((-1) & ~IN_CLASSB_NET)
++IN_CLASSB_MAX = 65536
++def IN_CLASSC(a): return ((((in_addr_t)(a)) & (-536870912)) == (-1073741824))
++
++IN_CLASSC_NET = (-256)
++IN_CLASSC_NSHIFT = 8
++IN_CLASSC_HOST = ((-1) & ~IN_CLASSC_NET)
++def IN_CLASSD(a): return ((((in_addr_t)(a)) & (-268435456)) == (-536870912))
++
++def IN_MULTICAST(a): return IN_CLASSD(a)
++
++def IN_EXPERIMENTAL(a): return ((((in_addr_t)(a)) & (-536870912)) == (-536870912))
++
++def IN_BADCLASS(a): return ((((in_addr_t)(a)) & (-268435456)) == (-268435456))
++
++IN_LOOPBACKNET = 127
++INET_ADDRSTRLEN = 16
++INET6_ADDRSTRLEN = 46
++
++# Included from bits/in.h
++IMPLINK_IP = 155
++IMPLINK_LOWEXPER = 156
++IMPLINK_HIGHEXPER = 158
++IPPROTO_DIVERT = 258
++SOL_IP = 0
++IP_OPTIONS = 1
++IP_HDRINCL = 2
++IP_TOS = 3
++IP_TTL = 4
++IP_RECVOPTS = 5
++IP_RECVRETOPTS = 6
++IP_RECVDSTADDR = 7
++IP_SENDSRCADDR = IP_RECVDSTADDR
++IP_RETOPTS = 8
++IP_MULTICAST_IF = 9
++IP_MULTICAST_TTL = 10
++IP_MULTICAST_LOOP = 11
++IP_ADD_MEMBERSHIP = 12
++IP_DROP_MEMBERSHIP = 13
++IP_MULTICAST_VIF = 14
++IP_RSVP_ON = 15
++IP_RSVP_OFF = 16
++IP_RSVP_VIF_ON = 17
++IP_RSVP_VIF_OFF = 18
++IP_PORTRANGE = 19
++IP_RECVIF = 20
++IP_IPSEC_POLICY = 21
++IP_FAITH = 22
++IP_ONESBCAST = 23
++IP_NONLOCALOK = 24
++IP_FW_TABLE_ADD = 40
++IP_FW_TABLE_DEL = 41
++IP_FW_TABLE_FLUSH = 42
++IP_FW_TABLE_GETSIZE = 43
++IP_FW_TABLE_LIST = 44
++IP_FW_ADD = 50
++IP_FW_DEL = 51
++IP_FW_FLUSH = 52
++IP_FW_ZERO = 53
++IP_FW_GET = 54
++IP_FW_RESETLOG = 55
++IP_FW_NAT_CFG = 56
++IP_FW_NAT_DEL = 57
++IP_FW_NAT_GET_CONFIG = 58
++IP_FW_NAT_GET_LOG = 59
++IP_DUMMYNET_CONFIGURE = 60
++IP_DUMMYNET_DEL = 61
++IP_DUMMYNET_FLUSH = 62
++IP_DUMMYNET_GET = 64
++IP_RECVTTL = 65
++IP_MINTTL = 66
++IP_DONTFRAG = 67
++IP_ADD_SOURCE_MEMBERSHIP = 70
++IP_DROP_SOURCE_MEMBERSHIP = 71
++IP_BLOCK_SOURCE = 72
++IP_UNBLOCK_SOURCE = 73
++IP_MSFILTER = 74
++MCAST_JOIN_GROUP = 80
++MCAST_LEAVE_GROUP = 81
++MCAST_JOIN_SOURCE_GROUP = 82
++MCAST_LEAVE_SOURCE_GROUP = 83
++MCAST_BLOCK_SOURCE = 84
++MCAST_UNBLOCK_SOURCE = 85
++IP_DEFAULT_MULTICAST_TTL = 1
++IP_DEFAULT_MULTICAST_LOOP = 1
++IP_MIN_MEMBERSHIPS = 31
++IP_MAX_MEMBERSHIPS = 4095
++IP_MAX_SOURCE_FILTER = 1024
++MCAST_UNDEFINED = 0
++MCAST_INCLUDE = 1
++MCAST_EXCLUDE = 2
++IP_PORTRANGE_DEFAULT = 0
++IP_PORTRANGE_HIGH = 1
++IP_PORTRANGE_LOW = 2
++IPCTL_FORWARDING = 1
++IPCTL_SENDREDIRECTS = 2
++IPCTL_DEFTTL = 3
++IPCTL_DEFMTU = 4
++IPCTL_RTEXPIRE = 5
++IPCTL_RTMINEXPIRE = 6
++IPCTL_RTMAXCACHE = 7
++IPCTL_SOURCEROUTE = 8
++IPCTL_DIRECTEDBROADCAST = 9
++IPCTL_INTRQMAXLEN = 10
++IPCTL_INTRQDROPS = 11
++IPCTL_STATS = 12
++IPCTL_ACCEPTSOURCEROUTE = 13
++IPCTL_FASTFORWARDING = 14
++IPCTL_KEEPFAITH = 15
++IPCTL_GIF_TTL = 16
++IPCTL_MAXID = 17
++IPV6_SOCKOPT_RESERVED1 = 3
++IPV6_UNICAST_HOPS = 4
++IPV6_MULTICAST_IF = 9
++IPV6_MULTICAST_HOPS = 10
++IPV6_MULTICAST_LOOP = 11
++IPV6_JOIN_GROUP = 12
++IPV6_LEAVE_GROUP = 13
++IPV6_PORTRANGE = 14
++ICMP6_FILTER = 18
++IPV6_CHECKSUM = 26
++IPV6_V6ONLY = 27
++IPV6_IPSEC_POLICY = 28
++IPV6_FAITH = 29
++IPV6_FW_ADD = 30
++IPV6_FW_DEL = 31
++IPV6_FW_FLUSH = 32
++IPV6_FW_ZERO = 33
++IPV6_FW_GET = 34
++IPV6_RTHDRDSTOPTS = 35
++IPV6_RECVPKTINFO = 36
++IPV6_RECVHOPLIMIT = 37
++IPV6_RECVRTHDR = 38
++IPV6_RECVHOPOPTS = 39
++IPV6_RECVDSTOPTS = 40
++IPV6_USE_MIN_MTU = 42
++IPV6_RECVPATHMTU = 43
++IPV6_PATHMTU = 44
++IPV6_PKTINFO = 46
++IPV6_HOPLIMIT = 47
++IPV6_NEXTHOP = 48
++IPV6_HOPOPTS = 49
++IPV6_DSTOPTS = 50
++IPV6_RTHDR = 51
++IPV6_RECVTCLASS = 57
++IPV6_AUTOFLOWLABEL = 59
++IPV6_TCLASS = 61
++IPV6_DONTFRAG = 62
++IPV6_PREFER_TEMPADDR = 63
++IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP
++IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP
++IPV6_RXHOPOPTS = IPV6_HOPOPTS
++IPV6_RXDSTOPTS = IPV6_DSTOPTS
++SOL_IPV6 = 41
++SOL_ICMPV6 = 58
++IPV6_DEFAULT_MULTICAST_HOPS = 1
++IPV6_DEFAULT_MULTICAST_LOOP = 1
++IPV6_PORTRANGE_DEFAULT = 0
++IPV6_PORTRANGE_HIGH = 1
++IPV6_PORTRANGE_LOW = 2
++IPV6_RTHDR_LOOSE = 0
++IPV6_RTHDR_STRICT = 1
++IPV6_RTHDR_TYPE_0 = 0
++IPV6CTL_FORWARDING = 1
++IPV6CTL_SENDREDIRECTS = 2
++IPV6CTL_DEFHLIM = 3
++IPV6CTL_FORWSRCRT = 5
++IPV6CTL_STATS = 6
++IPV6CTL_MRTSTATS = 7
++IPV6CTL_MRTPROTO = 8
++IPV6CTL_MAXFRAGPACKETS = 9
++IPV6CTL_SOURCECHECK = 10
++IPV6CTL_SOURCECHECK_LOGINT = 11
++IPV6CTL_ACCEPT_RTADV = 12
++IPV6CTL_KEEPFAITH = 13
++IPV6CTL_LOG_INTERVAL = 14
++IPV6CTL_HDRNESTLIMIT = 15
++IPV6CTL_DAD_COUNT = 16
++IPV6CTL_AUTO_FLOWLABEL = 17
++IPV6CTL_DEFMCASTHLIM = 18
++IPV6CTL_GIF_HLIM = 19
++IPV6CTL_KAME_VERSION = 20
++IPV6CTL_USE_DEPRECATED = 21
++IPV6CTL_RR_PRUNE = 22
++IPV6CTL_V6ONLY = 24
++IPV6CTL_RTEXPIRE = 25
++IPV6CTL_RTMINEXPIRE = 26
++IPV6CTL_RTMAXCACHE = 27
++IPV6CTL_USETEMPADDR = 32
++IPV6CTL_TEMPPLTIME = 33
++IPV6CTL_TEMPVLTIME = 34
++IPV6CTL_AUTO_LINKLOCAL = 35
++IPV6CTL_RIP6STATS = 36
++IPV6CTL_PREFER_TEMPADDR = 37
++IPV6CTL_ADDRCTLPOLICY = 38
++IPV6CTL_USE_DEFAULTZONE = 39
++IPV6CTL_MAXFRAGS = 41
++IPV6CTL_MCAST_PMTU = 44
++IPV6CTL_STEALTH = 45
++ICMPV6CTL_ND6_ONLINKNSRFC4861 = 47
++IPV6CTL_MAXID = 48
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def htobe16(x): return __bswap_16 (x)
++
++def htole16(x): return (x)
++
++def be16toh(x): return __bswap_16 (x)
++
++def le16toh(x): return (x)
++
++def htobe32(x): return __bswap_32 (x)
++
++def htole32(x): return (x)
++
++def be32toh(x): return __bswap_32 (x)
++
++def le32toh(x): return (x)
++
++def htobe64(x): return __bswap_64 (x)
++
++def htole64(x): return (x)
++
++def be64toh(x): return __bswap_64 (x)
++
++def le64toh(x): return (x)
++
++def htobe16(x): return (x)
++
++def htole16(x): return __bswap_16 (x)
++
++def be16toh(x): return (x)
++
++def le16toh(x): return __bswap_16 (x)
++
++def htobe32(x): return (x)
++
++def htole32(x): return __bswap_32 (x)
++
++def be32toh(x): return (x)
++
++def le32toh(x): return __bswap_32 (x)
++
++def htobe64(x): return (x)
++
++def htole64(x): return __bswap_64 (x)
++
++def be64toh(x): return (x)
++
++def le64toh(x): return __bswap_64 (x)
++
++def ntohl(x): return (x)
++
++def ntohs(x): return (x)
++
++def htonl(x): return (x)
++
++def htons(x): return (x)
++
++def ntohl(x): return __bswap_32 (x)
++
++def ntohs(x): return __bswap_16 (x)
++
++def htonl(x): return __bswap_32 (x)
++
++def htons(x): return __bswap_16 (x)
++
++def IN6_IS_ADDR_UNSPECIFIED(a): return \
++
++def IN6_IS_ADDR_LOOPBACK(a): return \
++
++def IN6_IS_ADDR_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_V4MAPPED(a): return \
++
++def IN6_IS_ADDR_V4COMPAT(a): return \
++
++def IN6_IS_ADDR_MC_NODELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_GLOBAL(a): return \
++
+diff --git a/lib-python/2.7/plat-gnukfreebsd8/TYPES.py b/lib-python/2.7/plat-gnukfreebsd8/TYPES.py
+new file mode 100644
+index 0000000..4132c8f
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd8/TYPES.py
+@@ -0,0 +1,303 @@
++# Generated by h2py from /usr/include/sys/types.h
++_SYS_TYPES_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__S32_TYPE = int
++__SWORD_TYPE = int
++__SLONG32_TYPE = int
++
++# Included from bits/typesizes.h
++_BITS_TYPESIZES_H = 1
++__PID_T_TYPE = __S32_TYPE
++__CLOCK_T_TYPE = __S32_TYPE
++__SWBLK_T_TYPE = __S32_TYPE
++__CLOCKID_T_TYPE = __S32_TYPE
++__TIMER_T_TYPE = __S32_TYPE
++__SSIZE_T_TYPE = __SWORD_TYPE
++__FD_SETSIZE = 1024
++
++# Included from time.h
++_TIME_H = 1
++
++# Included from bits/time.h
++_BITS_TIME_H = 1
++CLOCKS_PER_SEC = 1000000l
++CLK_TCK = 128
++CLOCK_REALTIME = 0
++CLOCK_PROCESS_CPUTIME_ID = 2
++CLOCK_THREAD_CPUTIME_ID = 3
++CLOCK_MONOTONIC = 4
++CLOCK_VIRTUAL = 1
++CLOCK_PROF = 2
++CLOCK_UPTIME = 5
++CLOCK_UPTIME_PRECISE = 7
++CLOCK_UPTIME_FAST = 8
++CLOCK_REALTIME_PRECISE = 9
++CLOCK_REALTIME_FAST = 10
++CLOCK_MONOTONIC_PRECISE = 11
++CLOCK_MONOTONIC_FAST = 12
++CLOCK_SECOND = 13
++TIMER_RELTIME = 0
++TIMER_ABSTIME = 1
++_STRUCT_TIMEVAL = 1
++CLK_TCK = CLOCKS_PER_SEC
++__clock_t_defined = 1
++__time_t_defined = 1
++__clockid_t_defined = 1
++__timer_t_defined = 1
++__timespec_defined = 1
++
++# Included from xlocale.h
++_XLOCALE_H = 1
++def __isleap(year): return \
++
++__BIT_TYPES_DEFINED__ = 1
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def htobe16(x): return __bswap_16 (x)
++
++def htole16(x): return (x)
++
++def be16toh(x): return __bswap_16 (x)
++
++def le16toh(x): return (x)
++
++def htobe32(x): return __bswap_32 (x)
++
++def htole32(x): return (x)
++
++def be32toh(x): return __bswap_32 (x)
++
++def le32toh(x): return (x)
++
++def htobe64(x): return __bswap_64 (x)
++
++def htole64(x): return (x)
++
++def be64toh(x): return __bswap_64 (x)
++
++def le64toh(x): return (x)
++
++def htobe16(x): return (x)
++
++def htole16(x): return __bswap_16 (x)
++
++def be16toh(x): return (x)
++
++def le16toh(x): return __bswap_16 (x)
++
++def htobe32(x): return (x)
++
++def htole32(x): return __bswap_32 (x)
++
++def be32toh(x): return (x)
++
++def le32toh(x): return __bswap_32 (x)
++
++def htobe64(x): return (x)
++
++def htole64(x): return __bswap_64 (x)
++
++def be64toh(x): return (x)
++
++def le64toh(x): return __bswap_64 (x)
++
++
++# Included from sys/select.h
++_SYS_SELECT_H = 1
++
++# Included from bits/select.h
++def __FD_ZERO(fdsp): return \
++
++def __FD_ZERO(set): return \
++
++
++# Included from bits/sigset.h
++_SIGSET_H_types = 1
++_SIGSET_H_fns = 1
++def __sigword(sig): return (((sig) - 1) >> 5)
++
++def __sigemptyset(set): return \
++
++def __sigfillset(set): return \
++
++def __sigisemptyset(set): return \
++
++def __FDELT(d): return ((d) / __NFDBITS)
++
++FD_SETSIZE = __FD_SETSIZE
++def FD_ZERO(fdsetp): return __FD_ZERO (fdsetp)
++
++
++# Included from sys/sysmacros.h
++_SYS_SYSMACROS_H = 1
++def minor(dev): return ((int)((dev) & (-65281)))
++
++def gnu_dev_major(dev): return major (dev)
++
++def gnu_dev_minor(dev): return minor (dev)
++
++
++# Included from bits/pthreadtypes.h
++_BITS_PTHREADTYPES_H = 1
++
++# Included from bits/sched.h
++SCHED_OTHER = 2
++SCHED_FIFO = 1
++SCHED_RR = 3
++CSIGNAL = 0x000000ff
++CLONE_VM = 0x00000100
++CLONE_FS = 0x00000200
++CLONE_FILES = 0x00000400
++CLONE_SIGHAND = 0x00000800
++CLONE_PTRACE = 0x00002000
++CLONE_VFORK = 0x00004000
++CLONE_SYSVSEM = 0x00040000
++__defined_schedparam = 1
++__CPU_SETSIZE = 128
++def __CPUELT(cpu): return ((cpu) / __NCPUBITS)
++
++def __CPU_ALLOC_SIZE(count): return \
++
++def __CPU_ALLOC(count): return __sched_cpualloc (count)
++
++def __CPU_FREE(cpuset): return __sched_cpufree (cpuset)
++
+diff --git a/lib-python/2.7/plat-gnukfreebsd9/DLFCN.py b/lib-python/2.7/plat-gnukfreebsd9/DLFCN.py
+new file mode 100644
+index 0000000..d020fe1
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd9/DLFCN.py
+@@ -0,0 +1,118 @@
++# Generated by h2py from /usr/include/dlfcn.h
++_DLFCN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from bits/dlfcn.h
++RTLD_LAZY = 0x00001
++RTLD_NOW = 0x00002
++RTLD_BINDING_MASK = 0x3
++RTLD_NOLOAD = 0x00004
++RTLD_DEEPBIND = 0x00008
++RTLD_GLOBAL = 0x00100
++RTLD_LOCAL = 0
++RTLD_NODELETE = 0x01000
++LM_ID_BASE = 0
++LM_ID_NEWLM = -1
+diff --git a/lib-python/2.7/plat-gnukfreebsd9/IN.py b/lib-python/2.7/plat-gnukfreebsd9/IN.py
+new file mode 100644
+index 0000000..7e5f845
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd9/IN.py
+@@ -0,0 +1,809 @@
++# Generated by h2py from /usr/include/netinet/in.h
++_NETINET_IN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from stdint.h
++_STDINT_H = 1
++
++# Included from bits/wchar.h
++_BITS_WCHAR_H = 1
++__WCHAR_MAX = (2147483647)
++__WCHAR_MIN = (-__WCHAR_MAX - 1)
++def __INT64_C(c): return c ## L
++
++def __UINT64_C(c): return c ## UL
++
++def __INT64_C(c): return c ## LL
++
++def __UINT64_C(c): return c ## ULL
++
++INT8_MIN = (-128)
++INT16_MIN = (-32767-1)
++INT32_MIN = (-2147483647-1)
++INT64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT8_MAX = (127)
++INT16_MAX = (32767)
++INT32_MAX = (2147483647)
++INT64_MAX = (__INT64_C(9223372036854775807))
++UINT8_MAX = (255)
++UINT16_MAX = (65535)
++UINT64_MAX = (__UINT64_C(18446744073709551615))
++INT_LEAST8_MIN = (-128)
++INT_LEAST16_MIN = (-32767-1)
++INT_LEAST32_MIN = (-2147483647-1)
++INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_LEAST8_MAX = (127)
++INT_LEAST16_MAX = (32767)
++INT_LEAST32_MAX = (2147483647)
++INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_LEAST8_MAX = (255)
++UINT_LEAST16_MAX = (65535)
++UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
++INT_FAST8_MIN = (-128)
++INT_FAST16_MIN = (-9223372036854775807L-1)
++INT_FAST32_MIN = (-9223372036854775807L-1)
++INT_FAST16_MIN = (-2147483647-1)
++INT_FAST32_MIN = (-2147483647-1)
++INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_FAST8_MAX = (127)
++INT_FAST16_MAX = (9223372036854775807L)
++INT_FAST32_MAX = (9223372036854775807L)
++INT_FAST16_MAX = (2147483647)
++INT_FAST32_MAX = (2147483647)
++INT_FAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_FAST8_MAX = (255)
++UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
++INTPTR_MIN = (-9223372036854775807L-1)
++INTPTR_MAX = (9223372036854775807L)
++INTPTR_MIN = (-2147483647-1)
++INTPTR_MAX = (2147483647)
++INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
++INTMAX_MAX = (__INT64_C(9223372036854775807))
++UINTMAX_MAX = (__UINT64_C(18446744073709551615))
++PTRDIFF_MIN = (-9223372036854775807L-1)
++PTRDIFF_MAX = (9223372036854775807L)
++PTRDIFF_MIN = (-2147483647-1)
++PTRDIFF_MAX = (2147483647)
++SIG_ATOMIC_MIN = (-2147483647-1)
++SIG_ATOMIC_MAX = (2147483647)
++WCHAR_MIN = __WCHAR_MIN
++WCHAR_MAX = __WCHAR_MAX
++def INT8_C(c): return c
++
++def INT16_C(c): return c
++
++def INT32_C(c): return c
++
++def INT64_C(c): return c ## L
++
++def INT64_C(c): return c ## LL
++
++def UINT8_C(c): return c
++
++def UINT16_C(c): return c
++
++def UINT32_C(c): return c ## U
++
++def UINT64_C(c): return c ## UL
++
++def UINT64_C(c): return c ## ULL
++
++def INTMAX_C(c): return c ## L
++
++def UINTMAX_C(c): return c ## UL
++
++def INTMAX_C(c): return c ## LL
++
++def UINTMAX_C(c): return c ## ULL
++
++
++# Included from sys/socket.h
++_SYS_SOCKET_H = 1
++
++# Included from sys/uio.h
++_SYS_UIO_H = 1
++from TYPES import *
++
++# Included from bits/uio.h
++_BITS_UIO_H = 1
++from TYPES import *
++UIO_MAXIOV = 1024
++
++# Included from bits/sigset.h
++_SIGSET_H_types = 1
++_SIGSET_H_fns = 1
++def __sigword(sig): return (((sig) - 1) >> 5)
++
++def __sigemptyset(set): return \
++
++def __sigfillset(set): return \
++
++def __sigisemptyset(set): return \
++
++
++# Included from bits/socket.h
++__BITS_SOCKET_H = 1
++
++# Included from limits.h
++_LIBC_LIMITS_H_ = 1
++MB_LEN_MAX = 16
++_LIMITS_H = 1
++CHAR_BIT = 8
++SCHAR_MIN = (-128)
++SCHAR_MAX = 127
++UCHAR_MAX = 255
++CHAR_MIN = 0
++CHAR_MAX = UCHAR_MAX
++CHAR_MIN = SCHAR_MIN
++CHAR_MAX = SCHAR_MAX
++SHRT_MIN = (-32768)
++SHRT_MAX = 32767
++USHRT_MAX = 65535
++INT_MAX = 2147483647
++LONG_MAX = 9223372036854775807L
++LONG_MAX = 2147483647L
++LONG_MIN = (-LONG_MAX - 1L)
++
++# Included from bits/posix1_lim.h
++_BITS_POSIX1_LIM_H = 1
++_POSIX_AIO_LISTIO_MAX = 2
++_POSIX_AIO_MAX = 1
++_POSIX_ARG_MAX = 4096
++_POSIX_CHILD_MAX = 25
++_POSIX_CHILD_MAX = 6
++_POSIX_DELAYTIMER_MAX = 32
++_POSIX_HOST_NAME_MAX = 255
++_POSIX_LINK_MAX = 8
++_POSIX_LOGIN_NAME_MAX = 9
++_POSIX_MAX_CANON = 255
++_POSIX_MAX_INPUT = 255
++_POSIX_MQ_OPEN_MAX = 8
++_POSIX_MQ_PRIO_MAX = 32
++_POSIX_NAME_MAX = 14
++_POSIX_NGROUPS_MAX = 8
++_POSIX_NGROUPS_MAX = 0
++_POSIX_OPEN_MAX = 20
++_POSIX_OPEN_MAX = 16
++_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
++_POSIX_PATH_MAX = 256
++_POSIX_PIPE_BUF = 512
++_POSIX_RE_DUP_MAX = 255
++_POSIX_RTSIG_MAX = 8
++_POSIX_SEM_NSEMS_MAX = 256
++_POSIX_SEM_VALUE_MAX = 32767
++_POSIX_SIGQUEUE_MAX = 32
++_POSIX_SSIZE_MAX = 32767
++_POSIX_STREAM_MAX = 8
++_POSIX_SYMLINK_MAX = 255
++_POSIX_SYMLOOP_MAX = 8
++_POSIX_TIMER_MAX = 32
++_POSIX_TTY_NAME_MAX = 9
++_POSIX_TZNAME_MAX = 6
++_POSIX_QLIMIT = 1
++_POSIX_HIWAT = _POSIX_PIPE_BUF
++_POSIX_UIO_MAXIOV = 16
++_POSIX_CLOCKRES_MIN = 20000000
++
++# Included from bits/local_lim.h
++
++# Included from sys/syslimits.h
++ARG_MAX = 262144
++CHILD_MAX = 40
++LINK_MAX = 32767
++MAX_CANON = 255
++MAX_INPUT = 255
++NAME_MAX = 255
++NGROUPS_MAX = 1023
++OPEN_MAX = 64
++PATH_MAX = 1024
++PIPE_BUF = 512
++IOV_MAX = 1024
++_POSIX_THREAD_KEYS_MAX = 128
++PTHREAD_KEYS_MAX = 1024
++_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
++PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++_POSIX_THREAD_THREADS_MAX = 64
++PTHREAD_THREADS_MAX = 1024
++AIO_PRIO_DELTA_MAX = 20
++PTHREAD_STACK_MIN = 16384
++TIMER_MAX = 256
++DELAYTIMER_MAX = 2147483647
++SSIZE_MAX = LONG_MAX
++NGROUPS_MAX = 8
++
++# Included from bits/posix2_lim.h
++_BITS_POSIX2_LIM_H = 1
++_POSIX2_BC_BASE_MAX = 99
++_POSIX2_BC_DIM_MAX = 2048
++_POSIX2_BC_SCALE_MAX = 99
++_POSIX2_BC_STRING_MAX = 1000
++_POSIX2_COLL_WEIGHTS_MAX = 2
++_POSIX2_EXPR_NEST_MAX = 32
++_POSIX2_LINE_MAX = 2048
++_POSIX2_RE_DUP_MAX = 255
++_POSIX2_CHARCLASS_NAME_MAX = 14
++BC_BASE_MAX = _POSIX2_BC_BASE_MAX
++BC_DIM_MAX = _POSIX2_BC_DIM_MAX
++BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
++BC_STRING_MAX = _POSIX2_BC_STRING_MAX
++COLL_WEIGHTS_MAX = 255
++EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
++LINE_MAX = _POSIX2_LINE_MAX
++CHARCLASS_NAME_MAX = 2048
++RE_DUP_MAX = (0x7fff)
++
++# Included from bits/xopen_lim.h
++_XOPEN_LIM_H = 1
++
++# Included from bits/stdio_lim.h
++L_tmpnam = 20
++TMP_MAX = 238328
++FILENAME_MAX = 1024
++L_ctermid = 9
++L_cuserid = 9
++FOPEN_MAX = 64
++IOV_MAX = 1024
++_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
++NL_ARGMAX = _POSIX_ARG_MAX
++NL_LANGMAX = _POSIX2_LINE_MAX
++NL_MSGMAX = INT_MAX
++NL_NMAX = INT_MAX
++NL_SETMAX = INT_MAX
++NL_TEXTMAX = INT_MAX
++NZERO = 20
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 32
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 64
++LONG_BIT = 32
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__S32_TYPE = int
++__SWORD_TYPE = int
++__SLONG32_TYPE = int
++
++# Included from bits/typesizes.h
++_BITS_TYPESIZES_H = 1
++__PID_T_TYPE = __S32_TYPE
++__CLOCK_T_TYPE = __S32_TYPE
++__SWBLK_T_TYPE = __S32_TYPE
++__CLOCKID_T_TYPE = __S32_TYPE
++__TIMER_T_TYPE = __S32_TYPE
++__SSIZE_T_TYPE = __SWORD_TYPE
++__FD_SETSIZE = 1024
++PF_UNSPEC = 0
++PF_LOCAL = 1
++PF_UNIX = PF_LOCAL
++PF_FILE = PF_LOCAL
++PF_INET = 2
++PF_IMPLINK = 3
++PF_PUP = 4
++PF_CHAOS = 5
++PF_NS = 6
++PF_ISO = 7
++PF_OSI = PF_ISO
++PF_ECMA = 8
++PF_DATAKIT = 9
++PF_CCITT = 10
++PF_SNA = 11
++PF_DECnet = 12
++PF_DLI = 13
++PF_LAT = 14
++PF_HYLINK = 15
++PF_APPLETALK = 16
++PF_ROUTE = 17
++PF_LINK = 18
++PF_XTP = 19
++PF_COIP = 20
++PF_CNT = 21
++PF_RTIP = 22
++PF_IPX = 23
++PF_SIP = 24
++PF_PIP = 25
++PF_ISDN = 26
++PF_KEY = 27
++PF_INET6 = 28
++PF_NATM = 29
++PF_ATM = 30
++PF_HDRCMPLT = 31
++PF_NETGRAPH = 32
++PF_MAX = 33
++AF_UNSPEC = PF_UNSPEC
++AF_LOCAL = PF_LOCAL
++AF_UNIX = PF_UNIX
++AF_FILE = PF_FILE
++AF_INET = PF_INET
++AF_IMPLINK = PF_IMPLINK
++AF_PUP = PF_PUP
++AF_CHAOS = PF_CHAOS
++AF_NS = PF_NS
++AF_ISO = PF_ISO
++AF_OSI = PF_OSI
++AF_ECMA = PF_ECMA
++AF_DATAKIT = PF_DATAKIT
++AF_CCITT = PF_CCITT
++AF_SNA = PF_SNA
++AF_DECnet = PF_DECnet
++AF_DLI = PF_DLI
++AF_LAT = PF_LAT
++AF_HYLINK = PF_HYLINK
++AF_APPLETALK = PF_APPLETALK
++AF_ROUTE = PF_ROUTE
++AF_LINK = PF_LINK
++pseudo_AF_XTP = PF_XTP
++AF_COIP = PF_COIP
++AF_CNT = PF_CNT
++pseudo_AF_RTIP = PF_RTIP
++AF_IPX = PF_IPX
++AF_SIP = PF_SIP
++pseudo_AF_PIP = PF_PIP
++AF_ISDN = PF_ISDN
++AF_E164 = AF_ISDN
++pseudo_AF_KEY = PF_KEY
++AF_INET6 = PF_INET6
++AF_NATM = PF_NATM
++AF_ATM = PF_ATM
++pseudo_AF_HDRCMPLT = PF_HDRCMPLT
++AF_NETGRAPH = PF_NETGRAPH
++AF_MAX = PF_MAX
++SOMAXCONN = 128
++
++# Included from bits/sockaddr.h
++_BITS_SOCKADDR_H = 1
++def __SOCKADDR_COMMON(sa_prefix): return \
++
++_HAVE_SA_LEN = 1
++_SS_SIZE = 128
++def CMSG_FIRSTHDR(mhdr): return \
++
++CMGROUP_MAX = 16
++SOL_SOCKET = 0xffff
++LOCAL_PEERCRED = 0x001
++LOCAL_CREDS = 0x002
++LOCAL_CONNWAIT = 0x004
++
++# Included from bits/socket2.h
++def IN_CLASSA(a): return ((((in_addr_t)(a)) & (-2147483648)) == 0)
++
++IN_CLASSA_NET = (-16777216)
++IN_CLASSA_NSHIFT = 24
++IN_CLASSA_HOST = ((-1) & ~IN_CLASSA_NET)
++IN_CLASSA_MAX = 128
++def IN_CLASSB(a): return ((((in_addr_t)(a)) & (-1073741824)) == (-2147483648))
++
++IN_CLASSB_NET = (-65536)
++IN_CLASSB_NSHIFT = 16
++IN_CLASSB_HOST = ((-1) & ~IN_CLASSB_NET)
++IN_CLASSB_MAX = 65536
++def IN_CLASSC(a): return ((((in_addr_t)(a)) & (-536870912)) == (-1073741824))
++
++IN_CLASSC_NET = (-256)
++IN_CLASSC_NSHIFT = 8
++IN_CLASSC_HOST = ((-1) & ~IN_CLASSC_NET)
++def IN_CLASSD(a): return ((((in_addr_t)(a)) & (-268435456)) == (-536870912))
++
++def IN_MULTICAST(a): return IN_CLASSD(a)
++
++def IN_EXPERIMENTAL(a): return ((((in_addr_t)(a)) & (-536870912)) == (-536870912))
++
++def IN_BADCLASS(a): return ((((in_addr_t)(a)) & (-268435456)) == (-268435456))
++
++IN_LOOPBACKNET = 127
++INET_ADDRSTRLEN = 16
++INET6_ADDRSTRLEN = 46
++
++# Included from bits/in.h
++IMPLINK_IP = 155
++IMPLINK_LOWEXPER = 156
++IMPLINK_HIGHEXPER = 158
++IPPROTO_DIVERT = 258
++SOL_IP = 0
++IP_OPTIONS = 1
++IP_HDRINCL = 2
++IP_TOS = 3
++IP_TTL = 4
++IP_RECVOPTS = 5
++IP_RECVRETOPTS = 6
++IP_RECVDSTADDR = 7
++IP_SENDSRCADDR = IP_RECVDSTADDR
++IP_RETOPTS = 8
++IP_MULTICAST_IF = 9
++IP_MULTICAST_TTL = 10
++IP_MULTICAST_LOOP = 11
++IP_ADD_MEMBERSHIP = 12
++IP_DROP_MEMBERSHIP = 13
++IP_MULTICAST_VIF = 14
++IP_RSVP_ON = 15
++IP_RSVP_OFF = 16
++IP_RSVP_VIF_ON = 17
++IP_RSVP_VIF_OFF = 18
++IP_PORTRANGE = 19
++IP_RECVIF = 20
++IP_IPSEC_POLICY = 21
++IP_FAITH = 22
++IP_ONESBCAST = 23
++IP_NONLOCALOK = 24
++IP_FW_TABLE_ADD = 40
++IP_FW_TABLE_DEL = 41
++IP_FW_TABLE_FLUSH = 42
++IP_FW_TABLE_GETSIZE = 43
++IP_FW_TABLE_LIST = 44
++IP_FW_ADD = 50
++IP_FW_DEL = 51
++IP_FW_FLUSH = 52
++IP_FW_ZERO = 53
++IP_FW_GET = 54
++IP_FW_RESETLOG = 55
++IP_FW_NAT_CFG = 56
++IP_FW_NAT_DEL = 57
++IP_FW_NAT_GET_CONFIG = 58
++IP_FW_NAT_GET_LOG = 59
++IP_DUMMYNET_CONFIGURE = 60
++IP_DUMMYNET_DEL = 61
++IP_DUMMYNET_FLUSH = 62
++IP_DUMMYNET_GET = 64
++IP_RECVTTL = 65
++IP_MINTTL = 66
++IP_DONTFRAG = 67
++IP_ADD_SOURCE_MEMBERSHIP = 70
++IP_DROP_SOURCE_MEMBERSHIP = 71
++IP_BLOCK_SOURCE = 72
++IP_UNBLOCK_SOURCE = 73
++IP_MSFILTER = 74
++MCAST_JOIN_GROUP = 80
++MCAST_LEAVE_GROUP = 81
++MCAST_JOIN_SOURCE_GROUP = 82
++MCAST_LEAVE_SOURCE_GROUP = 83
++MCAST_BLOCK_SOURCE = 84
++MCAST_UNBLOCK_SOURCE = 85
++IP_DEFAULT_MULTICAST_TTL = 1
++IP_DEFAULT_MULTICAST_LOOP = 1
++IP_MIN_MEMBERSHIPS = 31
++IP_MAX_MEMBERSHIPS = 4095
++IP_MAX_SOURCE_FILTER = 1024
++MCAST_UNDEFINED = 0
++MCAST_INCLUDE = 1
++MCAST_EXCLUDE = 2
++IP_PORTRANGE_DEFAULT = 0
++IP_PORTRANGE_HIGH = 1
++IP_PORTRANGE_LOW = 2
++IPCTL_FORWARDING = 1
++IPCTL_SENDREDIRECTS = 2
++IPCTL_DEFTTL = 3
++IPCTL_DEFMTU = 4
++IPCTL_RTEXPIRE = 5
++IPCTL_RTMINEXPIRE = 6
++IPCTL_RTMAXCACHE = 7
++IPCTL_SOURCEROUTE = 8
++IPCTL_DIRECTEDBROADCAST = 9
++IPCTL_INTRQMAXLEN = 10
++IPCTL_INTRQDROPS = 11
++IPCTL_STATS = 12
++IPCTL_ACCEPTSOURCEROUTE = 13
++IPCTL_FASTFORWARDING = 14
++IPCTL_KEEPFAITH = 15
++IPCTL_GIF_TTL = 16
++IPCTL_MAXID = 17
++IPV6_SOCKOPT_RESERVED1 = 3
++IPV6_UNICAST_HOPS = 4
++IPV6_MULTICAST_IF = 9
++IPV6_MULTICAST_HOPS = 10
++IPV6_MULTICAST_LOOP = 11
++IPV6_JOIN_GROUP = 12
++IPV6_LEAVE_GROUP = 13
++IPV6_PORTRANGE = 14
++ICMP6_FILTER = 18
++IPV6_CHECKSUM = 26
++IPV6_V6ONLY = 27
++IPV6_IPSEC_POLICY = 28
++IPV6_FAITH = 29
++IPV6_FW_ADD = 30
++IPV6_FW_DEL = 31
++IPV6_FW_FLUSH = 32
++IPV6_FW_ZERO = 33
++IPV6_FW_GET = 34
++IPV6_RTHDRDSTOPTS = 35
++IPV6_RECVPKTINFO = 36
++IPV6_RECVHOPLIMIT = 37
++IPV6_RECVRTHDR = 38
++IPV6_RECVHOPOPTS = 39
++IPV6_RECVDSTOPTS = 40
++IPV6_USE_MIN_MTU = 42
++IPV6_RECVPATHMTU = 43
++IPV6_PATHMTU = 44
++IPV6_PKTINFO = 46
++IPV6_HOPLIMIT = 47
++IPV6_NEXTHOP = 48
++IPV6_HOPOPTS = 49
++IPV6_DSTOPTS = 50
++IPV6_RTHDR = 51
++IPV6_RECVTCLASS = 57
++IPV6_AUTOFLOWLABEL = 59
++IPV6_TCLASS = 61
++IPV6_DONTFRAG = 62
++IPV6_PREFER_TEMPADDR = 63
++IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP
++IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP
++IPV6_RXHOPOPTS = IPV6_HOPOPTS
++IPV6_RXDSTOPTS = IPV6_DSTOPTS
++SOL_IPV6 = 41
++SOL_ICMPV6 = 58
++IPV6_DEFAULT_MULTICAST_HOPS = 1
++IPV6_DEFAULT_MULTICAST_LOOP = 1
++IPV6_PORTRANGE_DEFAULT = 0
++IPV6_PORTRANGE_HIGH = 1
++IPV6_PORTRANGE_LOW = 2
++IPV6_RTHDR_LOOSE = 0
++IPV6_RTHDR_STRICT = 1
++IPV6_RTHDR_TYPE_0 = 0
++IPV6CTL_FORWARDING = 1
++IPV6CTL_SENDREDIRECTS = 2
++IPV6CTL_DEFHLIM = 3
++IPV6CTL_FORWSRCRT = 5
++IPV6CTL_STATS = 6
++IPV6CTL_MRTSTATS = 7
++IPV6CTL_MRTPROTO = 8
++IPV6CTL_MAXFRAGPACKETS = 9
++IPV6CTL_SOURCECHECK = 10
++IPV6CTL_SOURCECHECK_LOGINT = 11
++IPV6CTL_ACCEPT_RTADV = 12
++IPV6CTL_KEEPFAITH = 13
++IPV6CTL_LOG_INTERVAL = 14
++IPV6CTL_HDRNESTLIMIT = 15
++IPV6CTL_DAD_COUNT = 16
++IPV6CTL_AUTO_FLOWLABEL = 17
++IPV6CTL_DEFMCASTHLIM = 18
++IPV6CTL_GIF_HLIM = 19
++IPV6CTL_KAME_VERSION = 20
++IPV6CTL_USE_DEPRECATED = 21
++IPV6CTL_RR_PRUNE = 22
++IPV6CTL_V6ONLY = 24
++IPV6CTL_RTEXPIRE = 25
++IPV6CTL_RTMINEXPIRE = 26
++IPV6CTL_RTMAXCACHE = 27
++IPV6CTL_USETEMPADDR = 32
++IPV6CTL_TEMPPLTIME = 33
++IPV6CTL_TEMPVLTIME = 34
++IPV6CTL_AUTO_LINKLOCAL = 35
++IPV6CTL_RIP6STATS = 36
++IPV6CTL_PREFER_TEMPADDR = 37
++IPV6CTL_ADDRCTLPOLICY = 38
++IPV6CTL_USE_DEFAULTZONE = 39
++IPV6CTL_MAXFRAGS = 41
++IPV6CTL_MCAST_PMTU = 44
++IPV6CTL_STEALTH = 45
++ICMPV6CTL_ND6_ONLINKNSRFC4861 = 47
++IPV6CTL_MAXID = 48
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def htobe16(x): return __bswap_16 (x)
++
++def htole16(x): return (x)
++
++def be16toh(x): return __bswap_16 (x)
++
++def le16toh(x): return (x)
++
++def htobe32(x): return __bswap_32 (x)
++
++def htole32(x): return (x)
++
++def be32toh(x): return __bswap_32 (x)
++
++def le32toh(x): return (x)
++
++def htobe64(x): return __bswap_64 (x)
++
++def htole64(x): return (x)
++
++def be64toh(x): return __bswap_64 (x)
++
++def le64toh(x): return (x)
++
++def htobe16(x): return (x)
++
++def htole16(x): return __bswap_16 (x)
++
++def be16toh(x): return (x)
++
++def le16toh(x): return __bswap_16 (x)
++
++def htobe32(x): return (x)
++
++def htole32(x): return __bswap_32 (x)
++
++def be32toh(x): return (x)
++
++def le32toh(x): return __bswap_32 (x)
++
++def htobe64(x): return (x)
++
++def htole64(x): return __bswap_64 (x)
++
++def be64toh(x): return (x)
++
++def le64toh(x): return __bswap_64 (x)
++
++def ntohl(x): return (x)
++
++def ntohs(x): return (x)
++
++def htonl(x): return (x)
++
++def htons(x): return (x)
++
++def ntohl(x): return __bswap_32 (x)
++
++def ntohs(x): return __bswap_16 (x)
++
++def htonl(x): return __bswap_32 (x)
++
++def htons(x): return __bswap_16 (x)
++
++def IN6_IS_ADDR_UNSPECIFIED(a): return \
++
++def IN6_IS_ADDR_LOOPBACK(a): return \
++
++def IN6_IS_ADDR_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_V4MAPPED(a): return \
++
++def IN6_IS_ADDR_V4COMPAT(a): return \
++
++def IN6_IS_ADDR_MC_NODELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_GLOBAL(a): return \
++
+diff --git a/lib-python/2.7/plat-gnukfreebsd9/TYPES.py b/lib-python/2.7/plat-gnukfreebsd9/TYPES.py
+new file mode 100644
+index 0000000..4132c8f
+--- /dev/null
++++ b/lib-python/2.7/plat-gnukfreebsd9/TYPES.py
+@@ -0,0 +1,303 @@
++# Generated by h2py from /usr/include/sys/types.h
++_SYS_TYPES_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 200809L
++_XOPEN_SOURCE = 700
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_ATFILE_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++__USE_ISOC95 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++_POSIX_C_SOURCE = 200112L
++_POSIX_C_SOURCE = 200809L
++__USE_POSIX_IMPLICITLY = 1
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN2K8 = 1
++_ATFILE_SOURCE = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K8 = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_ATFILE = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__USE_FORTIFY_LEVEL = 2
++__USE_FORTIFY_LEVEL = 1
++__USE_FORTIFY_LEVEL = 0
++
++# Included from bits/predefs.h
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 11
++__GLIBC_HAVE_LONG_LONG = 1
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __NTH(fct): return fct
++
++def __NTH(fct): return fct
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++def __bos(ptr): return __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++
++def __bos0(ptr): return __builtin_object_size (ptr, 0)
++
++def __warnattr(msg): return __attribute__((__warning__ (msg)))
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++__LDBL_COMPAT = 1
++def __LDBL_REDIR_DECL(name): return \
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++__USE_EXTERN_INLINES_IN_LIBC = 1
++
++# Included from gnu/stubs.h
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__S32_TYPE = int
++__SWORD_TYPE = int
++__SLONG32_TYPE = int
++
++# Included from bits/typesizes.h
++_BITS_TYPESIZES_H = 1
++__PID_T_TYPE = __S32_TYPE
++__CLOCK_T_TYPE = __S32_TYPE
++__SWBLK_T_TYPE = __S32_TYPE
++__CLOCKID_T_TYPE = __S32_TYPE
++__TIMER_T_TYPE = __S32_TYPE
++__SSIZE_T_TYPE = __SWORD_TYPE
++__FD_SETSIZE = 1024
++
++# Included from time.h
++_TIME_H = 1
++
++# Included from bits/time.h
++_BITS_TIME_H = 1
++CLOCKS_PER_SEC = 1000000l
++CLK_TCK = 128
++CLOCK_REALTIME = 0
++CLOCK_PROCESS_CPUTIME_ID = 2
++CLOCK_THREAD_CPUTIME_ID = 3
++CLOCK_MONOTONIC = 4
++CLOCK_VIRTUAL = 1
++CLOCK_PROF = 2
++CLOCK_UPTIME = 5
++CLOCK_UPTIME_PRECISE = 7
++CLOCK_UPTIME_FAST = 8
++CLOCK_REALTIME_PRECISE = 9
++CLOCK_REALTIME_FAST = 10
++CLOCK_MONOTONIC_PRECISE = 11
++CLOCK_MONOTONIC_FAST = 12
++CLOCK_SECOND = 13
++TIMER_RELTIME = 0
++TIMER_ABSTIME = 1
++_STRUCT_TIMEVAL = 1
++CLK_TCK = CLOCKS_PER_SEC
++__clock_t_defined = 1
++__time_t_defined = 1
++__clockid_t_defined = 1
++__timer_t_defined = 1
++__timespec_defined = 1
++
++# Included from xlocale.h
++_XLOCALE_H = 1
++def __isleap(year): return \
++
++__BIT_TYPES_DEFINED__ = 1
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def htobe16(x): return __bswap_16 (x)
++
++def htole16(x): return (x)
++
++def be16toh(x): return __bswap_16 (x)
++
++def le16toh(x): return (x)
++
++def htobe32(x): return __bswap_32 (x)
++
++def htole32(x): return (x)
++
++def be32toh(x): return __bswap_32 (x)
++
++def le32toh(x): return (x)
++
++def htobe64(x): return __bswap_64 (x)
++
++def htole64(x): return (x)
++
++def be64toh(x): return __bswap_64 (x)
++
++def le64toh(x): return (x)
++
++def htobe16(x): return (x)
++
++def htole16(x): return __bswap_16 (x)
++
++def be16toh(x): return (x)
++
++def le16toh(x): return __bswap_16 (x)
++
++def htobe32(x): return (x)
++
++def htole32(x): return __bswap_32 (x)
++
++def be32toh(x): return (x)
++
++def le32toh(x): return __bswap_32 (x)
++
++def htobe64(x): return (x)
++
++def htole64(x): return __bswap_64 (x)
++
++def be64toh(x): return (x)
++
++def le64toh(x): return __bswap_64 (x)
++
++
++# Included from sys/select.h
++_SYS_SELECT_H = 1
++
++# Included from bits/select.h
++def __FD_ZERO(fdsp): return \
++
++def __FD_ZERO(set): return \
++
++
++# Included from bits/sigset.h
++_SIGSET_H_types = 1
++_SIGSET_H_fns = 1
++def __sigword(sig): return (((sig) - 1) >> 5)
++
++def __sigemptyset(set): return \
++
++def __sigfillset(set): return \
++
++def __sigisemptyset(set): return \
++
++def __FDELT(d): return ((d) / __NFDBITS)
++
++FD_SETSIZE = __FD_SETSIZE
++def FD_ZERO(fdsetp): return __FD_ZERO (fdsetp)
++
++
++# Included from sys/sysmacros.h
++_SYS_SYSMACROS_H = 1
++def minor(dev): return ((int)((dev) & (-65281)))
++
++def gnu_dev_major(dev): return major (dev)
++
++def gnu_dev_minor(dev): return minor (dev)
++
++
++# Included from bits/pthreadtypes.h
++_BITS_PTHREADTYPES_H = 1
++
++# Included from bits/sched.h
++SCHED_OTHER = 2
++SCHED_FIFO = 1
++SCHED_RR = 3
++CSIGNAL = 0x000000ff
++CLONE_VM = 0x00000100
++CLONE_FS = 0x00000200
++CLONE_FILES = 0x00000400
++CLONE_SIGHAND = 0x00000800
++CLONE_PTRACE = 0x00002000
++CLONE_VFORK = 0x00004000
++CLONE_SYSVSEM = 0x00040000
++__defined_schedparam = 1
++__CPU_SETSIZE = 128
++def __CPUELT(cpu): return ((cpu) / __NCPUBITS)
++
++def __CPU_ALLOC_SIZE(count): return \
++
++def __CPU_ALLOC(count): return __sched_cpualloc (count)
++
++def __CPU_FREE(cpuset): return __sched_cpufree (cpuset)
++
diff --git a/debian/patches/plat-linux2-differences b/debian/patches/plat-linux2-differences
new file mode 100644
index 0000000..b95f7b1
--- /dev/null
+++ b/debian/patches/plat-linux2-differences
@@ -0,0 +1,4044 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: plat-linux2's constants vary
+
+Break the affected files up, and import based on platform.machine()
+
+Bug-cpython: http://bugs.python.org/issue3990
+Origin: Debian cpython packaging
+Author: Thiemo Seufer <ths@networkno.de>
+Author: Matthias Klose <doko@debian.org>
+Author: Stefano Rivera <stefanor@debian.org>
+Last-Update: 2014-09-22
+---
+ lib-python/2.7/plat-linux2/DLFCN.py | 88 +---
+ lib-python/2.7/plat-linux2/DLFCN_default.py | 83 ++++
+ lib-python/2.7/plat-linux2/DLFCN_mips.py | 83 ++++
+ lib-python/2.7/plat-linux2/IN.py | 630 +---------------------------
+ lib-python/2.7/plat-linux2/IN_alpha.py | 615 +++++++++++++++++++++++++++
+ lib-python/2.7/plat-linux2/IN_default.py | 615 +++++++++++++++++++++++++++
+ lib-python/2.7/plat-linux2/IN_hppa.py | 615 +++++++++++++++++++++++++++
+ lib-python/2.7/plat-linux2/IN_mips.py | 615 +++++++++++++++++++++++++++
+ lib-python/2.7/plat-linux2/IN_sparc.py | 615 +++++++++++++++++++++++++++
+ 9 files changed, 3263 insertions(+), 696 deletions(-)
+ create mode 100644 lib-python/2.7/plat-linux2/DLFCN_default.py
+ create mode 100644 lib-python/2.7/plat-linux2/DLFCN_mips.py
+ create mode 100644 lib-python/2.7/plat-linux2/IN_alpha.py
+ create mode 100644 lib-python/2.7/plat-linux2/IN_default.py
+ create mode 100644 lib-python/2.7/plat-linux2/IN_hppa.py
+ create mode 100644 lib-python/2.7/plat-linux2/IN_mips.py
+ create mode 100644 lib-python/2.7/plat-linux2/IN_sparc.py
+
+diff --git a/lib-python/2.7/plat-linux2/DLFCN.py b/lib-python/2.7/plat-linux2/DLFCN.py
+index e23340a..8d8204f 100644
+--- a/lib-python/2.7/plat-linux2/DLFCN.py
++++ b/lib-python/2.7/plat-linux2/DLFCN.py
+@@ -1,83 +1,9 @@
+-# Generated by h2py from /usr/include/dlfcn.h
+-_DLFCN_H = 1
++import platform
+
+-# Included from features.h
+-_FEATURES_H = 1
+-__USE_ANSI = 1
+-__FAVOR_BSD = 1
+-_ISOC99_SOURCE = 1
+-_POSIX_SOURCE = 1
+-_POSIX_C_SOURCE = 199506L
+-_XOPEN_SOURCE = 600
+-_XOPEN_SOURCE_EXTENDED = 1
+-_LARGEFILE64_SOURCE = 1
+-_BSD_SOURCE = 1
+-_SVID_SOURCE = 1
+-_BSD_SOURCE = 1
+-_SVID_SOURCE = 1
+-__USE_ISOC99 = 1
+-_POSIX_SOURCE = 1
+-_POSIX_C_SOURCE = 2
+-_POSIX_C_SOURCE = 199506L
+-__USE_POSIX = 1
+-__USE_POSIX2 = 1
+-__USE_POSIX199309 = 1
+-__USE_POSIX199506 = 1
+-__USE_XOPEN = 1
+-__USE_XOPEN_EXTENDED = 1
+-__USE_UNIX98 = 1
+-_LARGEFILE_SOURCE = 1
+-__USE_XOPEN2K = 1
+-__USE_ISOC99 = 1
+-__USE_XOPEN_EXTENDED = 1
+-__USE_LARGEFILE = 1
+-__USE_LARGEFILE64 = 1
+-__USE_FILE_OFFSET64 = 1
+-__USE_MISC = 1
+-__USE_BSD = 1
+-__USE_SVID = 1
+-__USE_GNU = 1
+-__USE_REENTRANT = 1
+-__STDC_IEC_559__ = 1
+-__STDC_IEC_559_COMPLEX__ = 1
+-__STDC_ISO_10646__ = 200009L
+-__GNU_LIBRARY__ = 6
+-__GLIBC__ = 2
+-__GLIBC_MINOR__ = 2
++architecture = platform.machine()
++if architecture.startswith('mips'):
++ from DLFCN_mips import *
++else:
++ from DLFCN_default import *
+
+-# Included from sys/cdefs.h
+-_SYS_CDEFS_H = 1
+-def __PMT(args): return args
+-
+-def __P(args): return args
+-
+-def __PMT(args): return args
+-
+-def __STRING(x): return #x
+-
+-__flexarr = []
+-__flexarr = [0]
+-__flexarr = []
+-__flexarr = [1]
+-def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+-
+-def __attribute__(xyz): return
+-
+-def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
+-
+-def __attribute_format_arg__(x): return
+-
+-__USE_LARGEFILE = 1
+-__USE_LARGEFILE64 = 1
+-__USE_EXTERN_INLINES = 1
+-
+-# Included from gnu/stubs.h
+-
+-# Included from bits/dlfcn.h
+-RTLD_LAZY = 0x00001
+-RTLD_NOW = 0x00002
+-RTLD_BINDING_MASK = 0x3
+-RTLD_NOLOAD = 0x00004
+-RTLD_GLOBAL = 0x00100
+-RTLD_LOCAL = 0
+-RTLD_NODELETE = 0x01000
++del platform, architecture
+diff --git a/lib-python/2.7/plat-linux2/DLFCN_default.py b/lib-python/2.7/plat-linux2/DLFCN_default.py
+new file mode 100644
+index 0000000..e23340a
+--- /dev/null
++++ b/lib-python/2.7/plat-linux2/DLFCN_default.py
+@@ -0,0 +1,83 @@
++# Generated by h2py from /usr/include/dlfcn.h
++_DLFCN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 199506L
++_XOPEN_SOURCE = 600
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 2
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __PMT(args): return args
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++
++# Included from gnu/stubs.h
++
++# Included from bits/dlfcn.h
++RTLD_LAZY = 0x00001
++RTLD_NOW = 0x00002
++RTLD_BINDING_MASK = 0x3
++RTLD_NOLOAD = 0x00004
++RTLD_GLOBAL = 0x00100
++RTLD_LOCAL = 0
++RTLD_NODELETE = 0x01000
+diff --git a/lib-python/2.7/plat-linux2/DLFCN_mips.py b/lib-python/2.7/plat-linux2/DLFCN_mips.py
+new file mode 100644
+index 0000000..9fbb22b
+--- /dev/null
++++ b/lib-python/2.7/plat-linux2/DLFCN_mips.py
+@@ -0,0 +1,83 @@
++# Generated by h2py from /usr/include/dlfcn.h
++_DLFCN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 199506L
++_XOPEN_SOURCE = 600
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 2
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __PMT(args): return args
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++
++# Included from gnu/stubs.h
++
++# Included from bits/dlfcn.h
++RTLD_LAZY = 0x00001
++RTLD_NOW = 0x00002
++RTLD_BINDING_MASK = 0x3
++RTLD_NOLOAD = 0x00008
++RTLD_GLOBAL = 0x00004
++RTLD_LOCAL = 0
++RTLD_NODELETE = 0x01000
+diff --git a/lib-python/2.7/plat-linux2/IN.py b/lib-python/2.7/plat-linux2/IN.py
+index ad307f6..360db68 100644
+--- a/lib-python/2.7/plat-linux2/IN.py
++++ b/lib-python/2.7/plat-linux2/IN.py
+@@ -1,615 +1,15 @@
+-# Generated by h2py from /usr/include/netinet/in.h
+-_NETINET_IN_H = 1
+-
+-# Included from features.h
+-_FEATURES_H = 1
+-__USE_ANSI = 1
+-__FAVOR_BSD = 1
+-_ISOC99_SOURCE = 1
+-_POSIX_SOURCE = 1
+-_POSIX_C_SOURCE = 199506L
+-_XOPEN_SOURCE = 600
+-_XOPEN_SOURCE_EXTENDED = 1
+-_LARGEFILE64_SOURCE = 1
+-_BSD_SOURCE = 1
+-_SVID_SOURCE = 1
+-_BSD_SOURCE = 1
+-_SVID_SOURCE = 1
+-__USE_ISOC99 = 1
+-_POSIX_SOURCE = 1
+-_POSIX_C_SOURCE = 2
+-_POSIX_C_SOURCE = 199506L
+-__USE_POSIX = 1
+-__USE_POSIX2 = 1
+-__USE_POSIX199309 = 1
+-__USE_POSIX199506 = 1
+-__USE_XOPEN = 1
+-__USE_XOPEN_EXTENDED = 1
+-__USE_UNIX98 = 1
+-_LARGEFILE_SOURCE = 1
+-__USE_XOPEN2K = 1
+-__USE_ISOC99 = 1
+-__USE_XOPEN_EXTENDED = 1
+-__USE_LARGEFILE = 1
+-__USE_LARGEFILE64 = 1
+-__USE_FILE_OFFSET64 = 1
+-__USE_MISC = 1
+-__USE_BSD = 1
+-__USE_SVID = 1
+-__USE_GNU = 1
+-__USE_REENTRANT = 1
+-__STDC_IEC_559__ = 1
+-__STDC_IEC_559_COMPLEX__ = 1
+-__STDC_ISO_10646__ = 200009L
+-__GNU_LIBRARY__ = 6
+-__GLIBC__ = 2
+-__GLIBC_MINOR__ = 2
+-
+-# Included from sys/cdefs.h
+-_SYS_CDEFS_H = 1
+-def __PMT(args): return args
+-
+-def __P(args): return args
+-
+-def __PMT(args): return args
+-
+-def __STRING(x): return #x
+-
+-__flexarr = []
+-__flexarr = [0]
+-__flexarr = []
+-__flexarr = [1]
+-def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+-
+-def __attribute__(xyz): return
+-
+-def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
+-
+-def __attribute_format_arg__(x): return
+-
+-__USE_LARGEFILE = 1
+-__USE_LARGEFILE64 = 1
+-__USE_EXTERN_INLINES = 1
+-
+-# Included from gnu/stubs.h
+-
+-# Included from stdint.h
+-_STDINT_H = 1
+-
+-# Included from bits/wchar.h
+-_BITS_WCHAR_H = 1
+-__WCHAR_MIN = (-2147483647l - 1l)
+-__WCHAR_MAX = (2147483647l)
+-
+-# Included from bits/wordsize.h
+-__WORDSIZE = 32
+-def __INT64_C(c): return c ## L
+-
+-def __UINT64_C(c): return c ## UL
+-
+-def __INT64_C(c): return c ## LL
+-
+-def __UINT64_C(c): return c ## ULL
+-
+-INT8_MIN = (-128)
+-INT16_MIN = (-32767-1)
+-INT32_MIN = (-2147483647-1)
+-INT64_MIN = (-__INT64_C(9223372036854775807)-1)
+-INT8_MAX = (127)
+-INT16_MAX = (32767)
+-INT32_MAX = (2147483647)
+-INT64_MAX = (__INT64_C(9223372036854775807))
+-UINT8_MAX = (255)
+-UINT16_MAX = (65535)
+-UINT64_MAX = (__UINT64_C(18446744073709551615))
+-INT_LEAST8_MIN = (-128)
+-INT_LEAST16_MIN = (-32767-1)
+-INT_LEAST32_MIN = (-2147483647-1)
+-INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
+-INT_LEAST8_MAX = (127)
+-INT_LEAST16_MAX = (32767)
+-INT_LEAST32_MAX = (2147483647)
+-INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
+-UINT_LEAST8_MAX = (255)
+-UINT_LEAST16_MAX = (65535)
+-UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
+-INT_FAST8_MIN = (-128)
+-INT_FAST16_MIN = (-9223372036854775807L-1)
+-INT_FAST32_MIN = (-9223372036854775807L-1)
+-INT_FAST16_MIN = (-2147483647-1)
+-INT_FAST32_MIN = (-2147483647-1)
+-INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
+-INT_FAST8_MAX = (127)
+-INT_FAST16_MAX = (9223372036854775807L)
+-INT_FAST32_MAX = (9223372036854775807L)
+-INT_FAST16_MAX = (2147483647)
+-INT_FAST32_MAX = (2147483647)
+-INT_FAST64_MAX = (__INT64_C(9223372036854775807))
+-UINT_FAST8_MAX = (255)
+-UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
+-INTPTR_MIN = (-9223372036854775807L-1)
+-INTPTR_MAX = (9223372036854775807L)
+-INTPTR_MIN = (-2147483647-1)
+-INTPTR_MAX = (2147483647)
+-INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
+-INTMAX_MAX = (__INT64_C(9223372036854775807))
+-UINTMAX_MAX = (__UINT64_C(18446744073709551615))
+-PTRDIFF_MIN = (-9223372036854775807L-1)
+-PTRDIFF_MAX = (9223372036854775807L)
+-PTRDIFF_MIN = (-2147483647-1)
+-PTRDIFF_MAX = (2147483647)
+-SIG_ATOMIC_MIN = (-2147483647-1)
+-SIG_ATOMIC_MAX = (2147483647)
+-WCHAR_MIN = __WCHAR_MIN
+-WCHAR_MAX = __WCHAR_MAX
+-def INT8_C(c): return c
+-
+-def INT16_C(c): return c
+-
+-def INT32_C(c): return c
+-
+-def INT64_C(c): return c ## L
+-
+-def INT64_C(c): return c ## LL
+-
+-def UINT8_C(c): return c ## U
+-
+-def UINT16_C(c): return c ## U
+-
+-def UINT32_C(c): return c ## U
+-
+-def UINT64_C(c): return c ## UL
+-
+-def UINT64_C(c): return c ## ULL
+-
+-def INTMAX_C(c): return c ## L
+-
+-def UINTMAX_C(c): return c ## UL
+-
+-def INTMAX_C(c): return c ## LL
+-
+-def UINTMAX_C(c): return c ## ULL
+-
+-
+-# Included from bits/types.h
+-_BITS_TYPES_H = 1
+-__FD_SETSIZE = 1024
+-
+-# Included from bits/pthreadtypes.h
+-_BITS_PTHREADTYPES_H = 1
+-
+-# Included from bits/sched.h
+-SCHED_OTHER = 0
+-SCHED_FIFO = 1
+-SCHED_RR = 2
+-CSIGNAL = 0x000000ff
+-CLONE_VM = 0x00000100
+-CLONE_FS = 0x00000200
+-CLONE_FILES = 0x00000400
+-CLONE_SIGHAND = 0x00000800
+-CLONE_PID = 0x00001000
+-CLONE_PTRACE = 0x00002000
+-CLONE_VFORK = 0x00004000
+-__defined_schedparam = 1
+-def IN_CLASSA(a): return ((((in_addr_t)(a)) & (-2147483648)) == 0)
+-
+-IN_CLASSA_NET = (-16777216)
+-IN_CLASSA_NSHIFT = 24
+-IN_CLASSA_HOST = ((-1) & ~IN_CLASSA_NET)
+-IN_CLASSA_MAX = 128
+-def IN_CLASSB(a): return ((((in_addr_t)(a)) & (-1073741824)) == (-2147483648))
+-
+-IN_CLASSB_NET = (-65536)
+-IN_CLASSB_NSHIFT = 16
+-IN_CLASSB_HOST = ((-1) & ~IN_CLASSB_NET)
+-IN_CLASSB_MAX = 65536
+-def IN_CLASSC(a): return ((((in_addr_t)(a)) & (-536870912)) == (-1073741824))
+-
+-IN_CLASSC_NET = (-256)
+-IN_CLASSC_NSHIFT = 8
+-IN_CLASSC_HOST = ((-1) & ~IN_CLASSC_NET)
+-def IN_CLASSD(a): return ((((in_addr_t)(a)) & (-268435456)) == (-536870912))
+-
+-def IN_MULTICAST(a): return IN_CLASSD(a)
+-
+-def IN_EXPERIMENTAL(a): return ((((in_addr_t)(a)) & (-536870912)) == (-536870912))
+-
+-def IN_BADCLASS(a): return ((((in_addr_t)(a)) & (-268435456)) == (-268435456))
+-
+-IN_LOOPBACKNET = 127
+-INET_ADDRSTRLEN = 16
+-INET6_ADDRSTRLEN = 46
+-
+-# Included from bits/socket.h
+-
+-# Included from limits.h
+-_LIBC_LIMITS_H_ = 1
+-MB_LEN_MAX = 16
+-_LIMITS_H = 1
+-CHAR_BIT = 8
+-SCHAR_MIN = (-128)
+-SCHAR_MAX = 127
+-UCHAR_MAX = 255
+-CHAR_MIN = 0
+-CHAR_MAX = UCHAR_MAX
+-CHAR_MIN = SCHAR_MIN
+-CHAR_MAX = SCHAR_MAX
+-SHRT_MIN = (-32768)
+-SHRT_MAX = 32767
+-USHRT_MAX = 65535
+-INT_MAX = 2147483647
+-LONG_MAX = 9223372036854775807L
+-LONG_MAX = 2147483647L
+-LONG_MIN = (-LONG_MAX - 1L)
+-
+-# Included from bits/posix1_lim.h
+-_BITS_POSIX1_LIM_H = 1
+-_POSIX_AIO_LISTIO_MAX = 2
+-_POSIX_AIO_MAX = 1
+-_POSIX_ARG_MAX = 4096
+-_POSIX_CHILD_MAX = 6
+-_POSIX_DELAYTIMER_MAX = 32
+-_POSIX_LINK_MAX = 8
+-_POSIX_MAX_CANON = 255
+-_POSIX_MAX_INPUT = 255
+-_POSIX_MQ_OPEN_MAX = 8
+-_POSIX_MQ_PRIO_MAX = 32
+-_POSIX_NGROUPS_MAX = 0
+-_POSIX_OPEN_MAX = 16
+-_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
+-_POSIX_NAME_MAX = 14
+-_POSIX_PATH_MAX = 256
+-_POSIX_PIPE_BUF = 512
+-_POSIX_RTSIG_MAX = 8
+-_POSIX_SEM_NSEMS_MAX = 256
+-_POSIX_SEM_VALUE_MAX = 32767
+-_POSIX_SIGQUEUE_MAX = 32
+-_POSIX_SSIZE_MAX = 32767
+-_POSIX_STREAM_MAX = 8
+-_POSIX_TZNAME_MAX = 6
+-_POSIX_QLIMIT = 1
+-_POSIX_HIWAT = _POSIX_PIPE_BUF
+-_POSIX_UIO_MAXIOV = 16
+-_POSIX_TTY_NAME_MAX = 9
+-_POSIX_TIMER_MAX = 32
+-_POSIX_LOGIN_NAME_MAX = 9
+-_POSIX_CLOCKRES_MIN = 20000000
+-
+-# Included from bits/local_lim.h
+-
+-# Included from linux/limits.h
+-NR_OPEN = 1024
+-NGROUPS_MAX = 32
+-ARG_MAX = 131072
+-CHILD_MAX = 999
+-OPEN_MAX = 256
+-LINK_MAX = 127
+-MAX_CANON = 255
+-MAX_INPUT = 255
+-NAME_MAX = 255
+-PATH_MAX = 4096
+-PIPE_BUF = 4096
+-RTSIG_MAX = 32
+-_POSIX_THREAD_KEYS_MAX = 128
+-PTHREAD_KEYS_MAX = 1024
+-_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
+-PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS
+-_POSIX_THREAD_THREADS_MAX = 64
+-PTHREAD_THREADS_MAX = 1024
+-AIO_PRIO_DELTA_MAX = 20
+-PTHREAD_STACK_MIN = 16384
+-TIMER_MAX = 256
+-SSIZE_MAX = LONG_MAX
+-NGROUPS_MAX = _POSIX_NGROUPS_MAX
+-
+-# Included from bits/posix2_lim.h
+-_BITS_POSIX2_LIM_H = 1
+-_POSIX2_BC_BASE_MAX = 99
+-_POSIX2_BC_DIM_MAX = 2048
+-_POSIX2_BC_SCALE_MAX = 99
+-_POSIX2_BC_STRING_MAX = 1000
+-_POSIX2_COLL_WEIGHTS_MAX = 2
+-_POSIX2_EXPR_NEST_MAX = 32
+-_POSIX2_LINE_MAX = 2048
+-_POSIX2_RE_DUP_MAX = 255
+-_POSIX2_CHARCLASS_NAME_MAX = 14
+-BC_BASE_MAX = _POSIX2_BC_BASE_MAX
+-BC_DIM_MAX = _POSIX2_BC_DIM_MAX
+-BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
+-BC_STRING_MAX = _POSIX2_BC_STRING_MAX
+-COLL_WEIGHTS_MAX = 255
+-EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
+-LINE_MAX = _POSIX2_LINE_MAX
+-CHARCLASS_NAME_MAX = 2048
+-RE_DUP_MAX = (0x7fff)
+-
+-# Included from bits/xopen_lim.h
+-_XOPEN_LIM_H = 1
+-
+-# Included from bits/stdio_lim.h
+-L_tmpnam = 20
+-TMP_MAX = 238328
+-FILENAME_MAX = 4096
+-L_ctermid = 9
+-L_cuserid = 9
+-FOPEN_MAX = 16
+-IOV_MAX = 1024
+-_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
+-NL_ARGMAX = _POSIX_ARG_MAX
+-NL_LANGMAX = _POSIX2_LINE_MAX
+-NL_MSGMAX = INT_MAX
+-NL_NMAX = INT_MAX
+-NL_SETMAX = INT_MAX
+-NL_TEXTMAX = INT_MAX
+-NZERO = 20
+-WORD_BIT = 16
+-WORD_BIT = 32
+-WORD_BIT = 64
+-WORD_BIT = 16
+-WORD_BIT = 32
+-WORD_BIT = 64
+-WORD_BIT = 32
+-LONG_BIT = 32
+-LONG_BIT = 64
+-LONG_BIT = 32
+-LONG_BIT = 64
+-LONG_BIT = 64
+-LONG_BIT = 32
+-from TYPES import *
+-PF_UNSPEC = 0
+-PF_LOCAL = 1
+-PF_UNIX = PF_LOCAL
+-PF_FILE = PF_LOCAL
+-PF_INET = 2
+-PF_AX25 = 3
+-PF_IPX = 4
+-PF_APPLETALK = 5
+-PF_NETROM = 6
+-PF_BRIDGE = 7
+-PF_ATMPVC = 8
+-PF_X25 = 9
+-PF_INET6 = 10
+-PF_ROSE = 11
+-PF_DECnet = 12
+-PF_NETBEUI = 13
+-PF_SECURITY = 14
+-PF_KEY = 15
+-PF_NETLINK = 16
+-PF_ROUTE = PF_NETLINK
+-PF_PACKET = 17
+-PF_ASH = 18
+-PF_ECONET = 19
+-PF_ATMSVC = 20
+-PF_SNA = 22
+-PF_IRDA = 23
+-PF_PPPOX = 24
+-PF_WANPIPE = 25
+-PF_BLUETOOTH = 31
+-PF_MAX = 32
+-AF_UNSPEC = PF_UNSPEC
+-AF_LOCAL = PF_LOCAL
+-AF_UNIX = PF_UNIX
+-AF_FILE = PF_FILE
+-AF_INET = PF_INET
+-AF_AX25 = PF_AX25
+-AF_IPX = PF_IPX
+-AF_APPLETALK = PF_APPLETALK
+-AF_NETROM = PF_NETROM
+-AF_BRIDGE = PF_BRIDGE
+-AF_ATMPVC = PF_ATMPVC
+-AF_X25 = PF_X25
+-AF_INET6 = PF_INET6
+-AF_ROSE = PF_ROSE
+-AF_DECnet = PF_DECnet
+-AF_NETBEUI = PF_NETBEUI
+-AF_SECURITY = PF_SECURITY
+-AF_KEY = PF_KEY
+-AF_NETLINK = PF_NETLINK
+-AF_ROUTE = PF_ROUTE
+-AF_PACKET = PF_PACKET
+-AF_ASH = PF_ASH
+-AF_ECONET = PF_ECONET
+-AF_ATMSVC = PF_ATMSVC
+-AF_SNA = PF_SNA
+-AF_IRDA = PF_IRDA
+-AF_PPPOX = PF_PPPOX
+-AF_WANPIPE = PF_WANPIPE
+-AF_BLUETOOTH = PF_BLUETOOTH
+-AF_MAX = PF_MAX
+-SOL_RAW = 255
+-SOL_DECNET = 261
+-SOL_X25 = 262
+-SOL_PACKET = 263
+-SOL_ATM = 264
+-SOL_AAL = 265
+-SOL_IRDA = 266
+-SOMAXCONN = 128
+-
+-# Included from bits/sockaddr.h
+-_BITS_SOCKADDR_H = 1
+-def __SOCKADDR_COMMON(sa_prefix): return \
+-
+-_SS_SIZE = 128
+-def CMSG_FIRSTHDR(mhdr): return \
+-
+-
+-# Included from asm/socket.h
+-
+-# Included from asm/sockios.h
+-FIOSETOWN = 0x8901
+-SIOCSPGRP = 0x8902
+-FIOGETOWN = 0x8903
+-SIOCGPGRP = 0x8904
+-SIOCATMARK = 0x8905
+-SIOCGSTAMP = 0x8906
+-SOL_SOCKET = 1
+-SO_DEBUG = 1
+-SO_REUSEADDR = 2
+-SO_TYPE = 3
+-SO_ERROR = 4
+-SO_DONTROUTE = 5
+-SO_BROADCAST = 6
+-SO_SNDBUF = 7
+-SO_RCVBUF = 8
+-SO_KEEPALIVE = 9
+-SO_OOBINLINE = 10
+-SO_NO_CHECK = 11
+-SO_PRIORITY = 12
+-SO_LINGER = 13
+-SO_BSDCOMPAT = 14
+-SO_PASSCRED = 16
+-SO_PEERCRED = 17
+-SO_RCVLOWAT = 18
+-SO_SNDLOWAT = 19
+-SO_RCVTIMEO = 20
+-SO_SNDTIMEO = 21
+-SO_SECURITY_AUTHENTICATION = 22
+-SO_SECURITY_ENCRYPTION_TRANSPORT = 23
+-SO_SECURITY_ENCRYPTION_NETWORK = 24
+-SO_BINDTODEVICE = 25
+-SO_ATTACH_FILTER = 26
+-SO_DETACH_FILTER = 27
+-SO_PEERNAME = 28
+-SO_TIMESTAMP = 29
+-SCM_TIMESTAMP = SO_TIMESTAMP
+-SO_ACCEPTCONN = 30
+-SOCK_STREAM = 1
+-SOCK_DGRAM = 2
+-SOCK_RAW = 3
+-SOCK_RDM = 4
+-SOCK_SEQPACKET = 5
+-SOCK_PACKET = 10
+-SOCK_MAX = (SOCK_PACKET+1)
+-
+-# Included from bits/in.h
+-IP_TOS = 1
+-IP_TTL = 2
+-IP_HDRINCL = 3
+-IP_OPTIONS = 4
+-IP_ROUTER_ALERT = 5
+-IP_RECVOPTS = 6
+-IP_RETOPTS = 7
+-IP_PKTINFO = 8
+-IP_PKTOPTIONS = 9
+-IP_PMTUDISC = 10
+-IP_MTU_DISCOVER = 10
+-IP_RECVERR = 11
+-IP_RECVTTL = 12
+-IP_RECVTOS = 13
+-IP_MULTICAST_IF = 32
+-IP_MULTICAST_TTL = 33
+-IP_MULTICAST_LOOP = 34
+-IP_ADD_MEMBERSHIP = 35
+-IP_DROP_MEMBERSHIP = 36
+-IP_RECVRETOPTS = IP_RETOPTS
+-IP_PMTUDISC_DONT = 0
+-IP_PMTUDISC_WANT = 1
+-IP_PMTUDISC_DO = 2
+-SOL_IP = 0
+-IP_DEFAULT_MULTICAST_TTL = 1
+-IP_DEFAULT_MULTICAST_LOOP = 1
+-IP_MAX_MEMBERSHIPS = 20
+-IPV6_ADDRFORM = 1
+-IPV6_PKTINFO = 2
+-IPV6_HOPOPTS = 3
+-IPV6_DSTOPTS = 4
+-IPV6_RTHDR = 5
+-IPV6_PKTOPTIONS = 6
+-IPV6_CHECKSUM = 7
+-IPV6_HOPLIMIT = 8
+-IPV6_NEXTHOP = 9
+-IPV6_AUTHHDR = 10
+-IPV6_UNICAST_HOPS = 16
+-IPV6_MULTICAST_IF = 17
+-IPV6_MULTICAST_HOPS = 18
+-IPV6_MULTICAST_LOOP = 19
+-IPV6_JOIN_GROUP = 20
+-IPV6_LEAVE_GROUP = 21
+-IPV6_ROUTER_ALERT = 22
+-IPV6_MTU_DISCOVER = 23
+-IPV6_MTU = 24
+-IPV6_RECVERR = 25
+-IPV6_RXHOPOPTS = IPV6_HOPOPTS
+-IPV6_RXDSTOPTS = IPV6_DSTOPTS
+-IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP
+-IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP
+-IPV6_PMTUDISC_DONT = 0
+-IPV6_PMTUDISC_WANT = 1
+-IPV6_PMTUDISC_DO = 2
+-SOL_IPV6 = 41
+-SOL_ICMPV6 = 58
+-IPV6_RTHDR_LOOSE = 0
+-IPV6_RTHDR_STRICT = 1
+-IPV6_RTHDR_TYPE_0 = 0
+-
+-# Included from endian.h
+-_ENDIAN_H = 1
+-__LITTLE_ENDIAN = 1234
+-__BIG_ENDIAN = 4321
+-__PDP_ENDIAN = 3412
+-
+-# Included from bits/endian.h
+-__BYTE_ORDER = __LITTLE_ENDIAN
+-__FLOAT_WORD_ORDER = __BYTE_ORDER
+-LITTLE_ENDIAN = __LITTLE_ENDIAN
+-BIG_ENDIAN = __BIG_ENDIAN
+-PDP_ENDIAN = __PDP_ENDIAN
+-BYTE_ORDER = __BYTE_ORDER
+-
+-# Included from bits/byteswap.h
+-_BITS_BYTESWAP_H = 1
+-def __bswap_constant_16(x): return \
+-
+-def __bswap_16(x): return \
+-
+-def __bswap_16(x): return __bswap_constant_16 (x)
+-
+-def __bswap_constant_32(x): return \
+-
+-def __bswap_32(x): return \
+-
+-def __bswap_32(x): return \
+-
+-def __bswap_32(x): return __bswap_constant_32 (x)
+-
+-def __bswap_constant_64(x): return \
+-
+-def __bswap_64(x): return \
+-
+-def ntohl(x): return (x)
+-
+-def ntohs(x): return (x)
+-
+-def htonl(x): return (x)
+-
+-def htons(x): return (x)
+-
+-def ntohl(x): return __bswap_32 (x)
+-
+-def ntohs(x): return __bswap_16 (x)
+-
+-def htonl(x): return __bswap_32 (x)
+-
+-def htons(x): return __bswap_16 (x)
+-
+-def IN6_IS_ADDR_UNSPECIFIED(a): return \
+-
+-def IN6_IS_ADDR_LOOPBACK(a): return \
+-
+-def IN6_IS_ADDR_LINKLOCAL(a): return \
+-
+-def IN6_IS_ADDR_SITELOCAL(a): return \
+-
+-def IN6_IS_ADDR_V4MAPPED(a): return \
+-
+-def IN6_IS_ADDR_V4COMPAT(a): return \
+-
+-def IN6_IS_ADDR_MC_NODELOCAL(a): return \
+-
+-def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
+-
+-def IN6_IS_ADDR_MC_SITELOCAL(a): return \
+-
+-def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
+-
+-def IN6_IS_ADDR_MC_GLOBAL(a): return
++import platform
++
++architecture = platform.machine()
++if architecture == 'alpha':
++ from IN_alpha import *
++elif architecture.startswith('parisc'):
++ from IN_hppa import *
++elif architecture.startswith('mips'):
++ from IN_mips import *
++elif architecture.startswith('sparc'):
++ from IN_sparc import *
++else:
++ from IN_default import *
++
++del platform, architecture
+diff --git a/lib-python/2.7/plat-linux2/IN_alpha.py b/lib-python/2.7/plat-linux2/IN_alpha.py
+new file mode 100644
+index 0000000..a397d51
+--- /dev/null
++++ b/lib-python/2.7/plat-linux2/IN_alpha.py
+@@ -0,0 +1,615 @@
++# Generated by h2py from /usr/include/netinet/in.h
++_NETINET_IN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 199506L
++_XOPEN_SOURCE = 600
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 2
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __PMT(args): return args
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++
++# Included from gnu/stubs.h
++
++# Included from stdint.h
++_STDINT_H = 1
++
++# Included from bits/wchar.h
++_BITS_WCHAR_H = 1
++__WCHAR_MIN = (-2147483647l - 1l)
++__WCHAR_MAX = (2147483647l)
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++def __INT64_C(c): return c ## L
++
++def __UINT64_C(c): return c ## UL
++
++def __INT64_C(c): return c ## LL
++
++def __UINT64_C(c): return c ## ULL
++
++INT8_MIN = (-128)
++INT16_MIN = (-32767-1)
++INT32_MIN = (-2147483647-1)
++INT64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT8_MAX = (127)
++INT16_MAX = (32767)
++INT32_MAX = (2147483647)
++INT64_MAX = (__INT64_C(9223372036854775807))
++UINT8_MAX = (255)
++UINT16_MAX = (65535)
++UINT64_MAX = (__UINT64_C(18446744073709551615))
++INT_LEAST8_MIN = (-128)
++INT_LEAST16_MIN = (-32767-1)
++INT_LEAST32_MIN = (-2147483647-1)
++INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_LEAST8_MAX = (127)
++INT_LEAST16_MAX = (32767)
++INT_LEAST32_MAX = (2147483647)
++INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_LEAST8_MAX = (255)
++UINT_LEAST16_MAX = (65535)
++UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
++INT_FAST8_MIN = (-128)
++INT_FAST16_MIN = (-9223372036854775807L-1)
++INT_FAST32_MIN = (-9223372036854775807L-1)
++INT_FAST16_MIN = (-2147483647-1)
++INT_FAST32_MIN = (-2147483647-1)
++INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_FAST8_MAX = (127)
++INT_FAST16_MAX = (9223372036854775807L)
++INT_FAST32_MAX = (9223372036854775807L)
++INT_FAST16_MAX = (2147483647)
++INT_FAST32_MAX = (2147483647)
++INT_FAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_FAST8_MAX = (255)
++UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
++INTPTR_MIN = (-9223372036854775807L-1)
++INTPTR_MAX = (9223372036854775807L)
++INTPTR_MIN = (-2147483647-1)
++INTPTR_MAX = (2147483647)
++INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
++INTMAX_MAX = (__INT64_C(9223372036854775807))
++UINTMAX_MAX = (__UINT64_C(18446744073709551615))
++PTRDIFF_MIN = (-9223372036854775807L-1)
++PTRDIFF_MAX = (9223372036854775807L)
++PTRDIFF_MIN = (-2147483647-1)
++PTRDIFF_MAX = (2147483647)
++SIG_ATOMIC_MIN = (-2147483647-1)
++SIG_ATOMIC_MAX = (2147483647)
++WCHAR_MIN = __WCHAR_MIN
++WCHAR_MAX = __WCHAR_MAX
++def INT8_C(c): return c
++
++def INT16_C(c): return c
++
++def INT32_C(c): return c
++
++def INT64_C(c): return c ## L
++
++def INT64_C(c): return c ## LL
++
++def UINT8_C(c): return c ## U
++
++def UINT16_C(c): return c ## U
++
++def UINT32_C(c): return c ## U
++
++def UINT64_C(c): return c ## UL
++
++def UINT64_C(c): return c ## ULL
++
++def INTMAX_C(c): return c ## L
++
++def UINTMAX_C(c): return c ## UL
++
++def INTMAX_C(c): return c ## LL
++
++def UINTMAX_C(c): return c ## ULL
++
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__FD_SETSIZE = 1024
++
++# Included from bits/pthreadtypes.h
++_BITS_PTHREADTYPES_H = 1
++
++# Included from bits/sched.h
++SCHED_OTHER = 0
++SCHED_FIFO = 1
++SCHED_RR = 2
++CSIGNAL = 0x000000ff
++CLONE_VM = 0x00000100
++CLONE_FS = 0x00000200
++CLONE_FILES = 0x00000400
++CLONE_SIGHAND = 0x00000800
++CLONE_PID = 0x00001000
++CLONE_PTRACE = 0x00002000
++CLONE_VFORK = 0x00004000
++__defined_schedparam = 1
++def IN_CLASSA(a): return ((((in_addr_t)(a)) & (-2147483648)) == 0)
++
++IN_CLASSA_NET = (-16777216)
++IN_CLASSA_NSHIFT = 24
++IN_CLASSA_HOST = ((-1) & ~IN_CLASSA_NET)
++IN_CLASSA_MAX = 128
++def IN_CLASSB(a): return ((((in_addr_t)(a)) & (-1073741824)) == (-2147483648))
++
++IN_CLASSB_NET = (-65536)
++IN_CLASSB_NSHIFT = 16
++IN_CLASSB_HOST = ((-1) & ~IN_CLASSB_NET)
++IN_CLASSB_MAX = 65536
++def IN_CLASSC(a): return ((((in_addr_t)(a)) & (-536870912)) == (-1073741824))
++
++IN_CLASSC_NET = (-256)
++IN_CLASSC_NSHIFT = 8
++IN_CLASSC_HOST = ((-1) & ~IN_CLASSC_NET)
++def IN_CLASSD(a): return ((((in_addr_t)(a)) & (-268435456)) == (-536870912))
++
++def IN_MULTICAST(a): return IN_CLASSD(a)
++
++def IN_EXPERIMENTAL(a): return ((((in_addr_t)(a)) & (-536870912)) == (-536870912))
++
++def IN_BADCLASS(a): return ((((in_addr_t)(a)) & (-268435456)) == (-268435456))
++
++IN_LOOPBACKNET = 127
++INET_ADDRSTRLEN = 16
++INET6_ADDRSTRLEN = 46
++
++# Included from bits/socket.h
++
++# Included from limits.h
++_LIBC_LIMITS_H_ = 1
++MB_LEN_MAX = 16
++_LIMITS_H = 1
++CHAR_BIT = 8
++SCHAR_MIN = (-128)
++SCHAR_MAX = 127
++UCHAR_MAX = 255
++CHAR_MIN = 0
++CHAR_MAX = UCHAR_MAX
++CHAR_MIN = SCHAR_MIN
++CHAR_MAX = SCHAR_MAX
++SHRT_MIN = (-32768)
++SHRT_MAX = 32767
++USHRT_MAX = 65535
++INT_MAX = 2147483647
++LONG_MAX = 9223372036854775807L
++LONG_MAX = 2147483647L
++LONG_MIN = (-LONG_MAX - 1L)
++
++# Included from bits/posix1_lim.h
++_BITS_POSIX1_LIM_H = 1
++_POSIX_AIO_LISTIO_MAX = 2
++_POSIX_AIO_MAX = 1
++_POSIX_ARG_MAX = 4096
++_POSIX_CHILD_MAX = 6
++_POSIX_DELAYTIMER_MAX = 32
++_POSIX_LINK_MAX = 8
++_POSIX_MAX_CANON = 255
++_POSIX_MAX_INPUT = 255
++_POSIX_MQ_OPEN_MAX = 8
++_POSIX_MQ_PRIO_MAX = 32
++_POSIX_NGROUPS_MAX = 0
++_POSIX_OPEN_MAX = 16
++_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
++_POSIX_NAME_MAX = 14
++_POSIX_PATH_MAX = 256
++_POSIX_PIPE_BUF = 512
++_POSIX_RTSIG_MAX = 8
++_POSIX_SEM_NSEMS_MAX = 256
++_POSIX_SEM_VALUE_MAX = 32767
++_POSIX_SIGQUEUE_MAX = 32
++_POSIX_SSIZE_MAX = 32767
++_POSIX_STREAM_MAX = 8
++_POSIX_TZNAME_MAX = 6
++_POSIX_QLIMIT = 1
++_POSIX_HIWAT = _POSIX_PIPE_BUF
++_POSIX_UIO_MAXIOV = 16
++_POSIX_TTY_NAME_MAX = 9
++_POSIX_TIMER_MAX = 32
++_POSIX_LOGIN_NAME_MAX = 9
++_POSIX_CLOCKRES_MIN = 20000000
++
++# Included from bits/local_lim.h
++
++# Included from linux/limits.h
++NR_OPEN = 1024
++NGROUPS_MAX = 32
++ARG_MAX = 131072
++CHILD_MAX = 999
++OPEN_MAX = 256
++LINK_MAX = 127
++MAX_CANON = 255
++MAX_INPUT = 255
++NAME_MAX = 255
++PATH_MAX = 4096
++PIPE_BUF = 4096
++RTSIG_MAX = 32
++_POSIX_THREAD_KEYS_MAX = 128
++PTHREAD_KEYS_MAX = 1024
++_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
++PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++_POSIX_THREAD_THREADS_MAX = 64
++PTHREAD_THREADS_MAX = 1024
++AIO_PRIO_DELTA_MAX = 20
++PTHREAD_STACK_MIN = 16384
++TIMER_MAX = 256
++SSIZE_MAX = LONG_MAX
++NGROUPS_MAX = _POSIX_NGROUPS_MAX
++
++# Included from bits/posix2_lim.h
++_BITS_POSIX2_LIM_H = 1
++_POSIX2_BC_BASE_MAX = 99
++_POSIX2_BC_DIM_MAX = 2048
++_POSIX2_BC_SCALE_MAX = 99
++_POSIX2_BC_STRING_MAX = 1000
++_POSIX2_COLL_WEIGHTS_MAX = 2
++_POSIX2_EXPR_NEST_MAX = 32
++_POSIX2_LINE_MAX = 2048
++_POSIX2_RE_DUP_MAX = 255
++_POSIX2_CHARCLASS_NAME_MAX = 14
++BC_BASE_MAX = _POSIX2_BC_BASE_MAX
++BC_DIM_MAX = _POSIX2_BC_DIM_MAX
++BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
++BC_STRING_MAX = _POSIX2_BC_STRING_MAX
++COLL_WEIGHTS_MAX = 255
++EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
++LINE_MAX = _POSIX2_LINE_MAX
++CHARCLASS_NAME_MAX = 2048
++RE_DUP_MAX = (0x7fff)
++
++# Included from bits/xopen_lim.h
++_XOPEN_LIM_H = 1
++
++# Included from bits/stdio_lim.h
++L_tmpnam = 20
++TMP_MAX = 238328
++FILENAME_MAX = 4096
++L_ctermid = 9
++L_cuserid = 9
++FOPEN_MAX = 16
++IOV_MAX = 1024
++_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
++NL_ARGMAX = _POSIX_ARG_MAX
++NL_LANGMAX = _POSIX2_LINE_MAX
++NL_MSGMAX = INT_MAX
++NL_NMAX = INT_MAX
++NL_SETMAX = INT_MAX
++NL_TEXTMAX = INT_MAX
++NZERO = 20
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 32
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 64
++LONG_BIT = 32
++from TYPES import *
++PF_UNSPEC = 0
++PF_LOCAL = 1
++PF_UNIX = PF_LOCAL
++PF_FILE = PF_LOCAL
++PF_INET = 2
++PF_AX25 = 3
++PF_IPX = 4
++PF_APPLETALK = 5
++PF_NETROM = 6
++PF_BRIDGE = 7
++PF_ATMPVC = 8
++PF_X25 = 9
++PF_INET6 = 10
++PF_ROSE = 11
++PF_DECnet = 12
++PF_NETBEUI = 13
++PF_SECURITY = 14
++PF_KEY = 15
++PF_NETLINK = 16
++PF_ROUTE = PF_NETLINK
++PF_PACKET = 17
++PF_ASH = 18
++PF_ECONET = 19
++PF_ATMSVC = 20
++PF_SNA = 22
++PF_IRDA = 23
++PF_PPPOX = 24
++PF_WANPIPE = 25
++PF_BLUETOOTH = 31
++PF_MAX = 32
++AF_UNSPEC = PF_UNSPEC
++AF_LOCAL = PF_LOCAL
++AF_UNIX = PF_UNIX
++AF_FILE = PF_FILE
++AF_INET = PF_INET
++AF_AX25 = PF_AX25
++AF_IPX = PF_IPX
++AF_APPLETALK = PF_APPLETALK
++AF_NETROM = PF_NETROM
++AF_BRIDGE = PF_BRIDGE
++AF_ATMPVC = PF_ATMPVC
++AF_X25 = PF_X25
++AF_INET6 = PF_INET6
++AF_ROSE = PF_ROSE
++AF_DECnet = PF_DECnet
++AF_NETBEUI = PF_NETBEUI
++AF_SECURITY = PF_SECURITY
++AF_KEY = PF_KEY
++AF_NETLINK = PF_NETLINK
++AF_ROUTE = PF_ROUTE
++AF_PACKET = PF_PACKET
++AF_ASH = PF_ASH
++AF_ECONET = PF_ECONET
++AF_ATMSVC = PF_ATMSVC
++AF_SNA = PF_SNA
++AF_IRDA = PF_IRDA
++AF_PPPOX = PF_PPPOX
++AF_WANPIPE = PF_WANPIPE
++AF_BLUETOOTH = PF_BLUETOOTH
++AF_MAX = PF_MAX
++SOL_RAW = 255
++SOL_DECNET = 261
++SOL_X25 = 262
++SOL_PACKET = 263
++SOL_ATM = 264
++SOL_AAL = 265
++SOL_IRDA = 266
++SOMAXCONN = 128
++
++# Included from bits/sockaddr.h
++_BITS_SOCKADDR_H = 1
++def __SOCKADDR_COMMON(sa_prefix): return \
++
++_SS_SIZE = 128
++def CMSG_FIRSTHDR(mhdr): return \
++
++
++# Included from asm/socket.h
++
++# Included from asm/sockios.h
++FIOSETOWN = 0x8004667c
++SIOCSPGRP = 0x80047308
++FIOGETOWN = 0x4004667b
++SIOCGPGRP = 0x40047309
++SIOCATMARK = 0x40047307
++SIOCGSTAMP = 0x8906
++SOL_SOCKET = 0xffff
++SO_DEBUG = 0x0001
++SO_REUSEADDR = 0x0004
++SO_TYPE = 0x1008
++SO_ERROR = 0x1007
++SO_DONTROUTE = 0x0010
++SO_BROADCAST = 0x0020
++SO_SNDBUF = 0x1001
++SO_RCVBUF = 0x1002
++SO_KEEPALIVE = 0x0008
++SO_OOBINLINE = 0x0100
++SO_NO_CHECK = 11
++SO_PRIORITY = 12
++SO_LINGER = 0x0080
++SO_BSDCOMPAT = 14
++SO_PASSCRED = 16
++SO_PEERCRED = 17
++SO_RCVLOWAT = 0x1010
++SO_SNDLOWAT = 0x1011
++SO_RCVTIMEO = 0x1012
++SO_SNDTIMEO = 0x1013
++SO_SECURITY_AUTHENTICATION = 19
++SO_SECURITY_ENCRYPTION_TRANSPORT = 20
++SO_SECURITY_ENCRYPTION_NETWORK = 21
++SO_BINDTODEVICE = 25
++SO_ATTACH_FILTER = 26
++SO_DETACH_FILTER = 27
++SO_PEERNAME = 28
++SO_TIMESTAMP = 29
++SCM_TIMESTAMP = SO_TIMESTAMP
++SO_ACCEPTCONN = 0x1014
++SOCK_STREAM = 1
++SOCK_DGRAM = 2
++SOCK_RAW = 3
++SOCK_RDM = 4
++SOCK_SEQPACKET = 5
++SOCK_PACKET = 10
++SOCK_MAX = (SOCK_PACKET+1)
++
++# Included from bits/in.h
++IP_TOS = 1
++IP_TTL = 2
++IP_HDRINCL = 3
++IP_OPTIONS = 4
++IP_ROUTER_ALERT = 5
++IP_RECVOPTS = 6
++IP_RETOPTS = 7
++IP_PKTINFO = 8
++IP_PKTOPTIONS = 9
++IP_PMTUDISC = 10
++IP_MTU_DISCOVER = 10
++IP_RECVERR = 11
++IP_RECVTTL = 12
++IP_RECVTOS = 13
++IP_MULTICAST_IF = 32
++IP_MULTICAST_TTL = 33
++IP_MULTICAST_LOOP = 34
++IP_ADD_MEMBERSHIP = 35
++IP_DROP_MEMBERSHIP = 36
++IP_RECVRETOPTS = IP_RETOPTS
++IP_PMTUDISC_DONT = 0
++IP_PMTUDISC_WANT = 1
++IP_PMTUDISC_DO = 2
++SOL_IP = 0
++IP_DEFAULT_MULTICAST_TTL = 1
++IP_DEFAULT_MULTICAST_LOOP = 1
++IP_MAX_MEMBERSHIPS = 20
++IPV6_ADDRFORM = 1
++IPV6_PKTINFO = 2
++IPV6_HOPOPTS = 3
++IPV6_DSTOPTS = 4
++IPV6_RTHDR = 5
++IPV6_PKTOPTIONS = 6
++IPV6_CHECKSUM = 7
++IPV6_HOPLIMIT = 8
++IPV6_NEXTHOP = 9
++IPV6_AUTHHDR = 10
++IPV6_UNICAST_HOPS = 16
++IPV6_MULTICAST_IF = 17
++IPV6_MULTICAST_HOPS = 18
++IPV6_MULTICAST_LOOP = 19
++IPV6_JOIN_GROUP = 20
++IPV6_LEAVE_GROUP = 21
++IPV6_ROUTER_ALERT = 22
++IPV6_MTU_DISCOVER = 23
++IPV6_MTU = 24
++IPV6_RECVERR = 25
++IPV6_RXHOPOPTS = IPV6_HOPOPTS
++IPV6_RXDSTOPTS = IPV6_DSTOPTS
++IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP
++IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP
++IPV6_PMTUDISC_DONT = 0
++IPV6_PMTUDISC_WANT = 1
++IPV6_PMTUDISC_DO = 2
++SOL_IPV6 = 41
++SOL_ICMPV6 = 58
++IPV6_RTHDR_LOOSE = 0
++IPV6_RTHDR_STRICT = 1
++IPV6_RTHDR_TYPE_0 = 0
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return __bswap_constant_16 (x)
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return __bswap_constant_32 (x)
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def ntohl(x): return (x)
++
++def ntohs(x): return (x)
++
++def htonl(x): return (x)
++
++def htons(x): return (x)
++
++def ntohl(x): return __bswap_32 (x)
++
++def ntohs(x): return __bswap_16 (x)
++
++def htonl(x): return __bswap_32 (x)
++
++def htons(x): return __bswap_16 (x)
++
++def IN6_IS_ADDR_UNSPECIFIED(a): return \
++
++def IN6_IS_ADDR_LOOPBACK(a): return \
++
++def IN6_IS_ADDR_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_V4MAPPED(a): return \
++
++def IN6_IS_ADDR_V4COMPAT(a): return \
++
++def IN6_IS_ADDR_MC_NODELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_GLOBAL(a): return
+diff --git a/lib-python/2.7/plat-linux2/IN_default.py b/lib-python/2.7/plat-linux2/IN_default.py
+new file mode 100644
+index 0000000..ad307f6
+--- /dev/null
++++ b/lib-python/2.7/plat-linux2/IN_default.py
+@@ -0,0 +1,615 @@
++# Generated by h2py from /usr/include/netinet/in.h
++_NETINET_IN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 199506L
++_XOPEN_SOURCE = 600
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 2
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __PMT(args): return args
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++
++# Included from gnu/stubs.h
++
++# Included from stdint.h
++_STDINT_H = 1
++
++# Included from bits/wchar.h
++_BITS_WCHAR_H = 1
++__WCHAR_MIN = (-2147483647l - 1l)
++__WCHAR_MAX = (2147483647l)
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++def __INT64_C(c): return c ## L
++
++def __UINT64_C(c): return c ## UL
++
++def __INT64_C(c): return c ## LL
++
++def __UINT64_C(c): return c ## ULL
++
++INT8_MIN = (-128)
++INT16_MIN = (-32767-1)
++INT32_MIN = (-2147483647-1)
++INT64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT8_MAX = (127)
++INT16_MAX = (32767)
++INT32_MAX = (2147483647)
++INT64_MAX = (__INT64_C(9223372036854775807))
++UINT8_MAX = (255)
++UINT16_MAX = (65535)
++UINT64_MAX = (__UINT64_C(18446744073709551615))
++INT_LEAST8_MIN = (-128)
++INT_LEAST16_MIN = (-32767-1)
++INT_LEAST32_MIN = (-2147483647-1)
++INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_LEAST8_MAX = (127)
++INT_LEAST16_MAX = (32767)
++INT_LEAST32_MAX = (2147483647)
++INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_LEAST8_MAX = (255)
++UINT_LEAST16_MAX = (65535)
++UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
++INT_FAST8_MIN = (-128)
++INT_FAST16_MIN = (-9223372036854775807L-1)
++INT_FAST32_MIN = (-9223372036854775807L-1)
++INT_FAST16_MIN = (-2147483647-1)
++INT_FAST32_MIN = (-2147483647-1)
++INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_FAST8_MAX = (127)
++INT_FAST16_MAX = (9223372036854775807L)
++INT_FAST32_MAX = (9223372036854775807L)
++INT_FAST16_MAX = (2147483647)
++INT_FAST32_MAX = (2147483647)
++INT_FAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_FAST8_MAX = (255)
++UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
++INTPTR_MIN = (-9223372036854775807L-1)
++INTPTR_MAX = (9223372036854775807L)
++INTPTR_MIN = (-2147483647-1)
++INTPTR_MAX = (2147483647)
++INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
++INTMAX_MAX = (__INT64_C(9223372036854775807))
++UINTMAX_MAX = (__UINT64_C(18446744073709551615))
++PTRDIFF_MIN = (-9223372036854775807L-1)
++PTRDIFF_MAX = (9223372036854775807L)
++PTRDIFF_MIN = (-2147483647-1)
++PTRDIFF_MAX = (2147483647)
++SIG_ATOMIC_MIN = (-2147483647-1)
++SIG_ATOMIC_MAX = (2147483647)
++WCHAR_MIN = __WCHAR_MIN
++WCHAR_MAX = __WCHAR_MAX
++def INT8_C(c): return c
++
++def INT16_C(c): return c
++
++def INT32_C(c): return c
++
++def INT64_C(c): return c ## L
++
++def INT64_C(c): return c ## LL
++
++def UINT8_C(c): return c ## U
++
++def UINT16_C(c): return c ## U
++
++def UINT32_C(c): return c ## U
++
++def UINT64_C(c): return c ## UL
++
++def UINT64_C(c): return c ## ULL
++
++def INTMAX_C(c): return c ## L
++
++def UINTMAX_C(c): return c ## UL
++
++def INTMAX_C(c): return c ## LL
++
++def UINTMAX_C(c): return c ## ULL
++
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__FD_SETSIZE = 1024
++
++# Included from bits/pthreadtypes.h
++_BITS_PTHREADTYPES_H = 1
++
++# Included from bits/sched.h
++SCHED_OTHER = 0
++SCHED_FIFO = 1
++SCHED_RR = 2
++CSIGNAL = 0x000000ff
++CLONE_VM = 0x00000100
++CLONE_FS = 0x00000200
++CLONE_FILES = 0x00000400
++CLONE_SIGHAND = 0x00000800
++CLONE_PID = 0x00001000
++CLONE_PTRACE = 0x00002000
++CLONE_VFORK = 0x00004000
++__defined_schedparam = 1
++def IN_CLASSA(a): return ((((in_addr_t)(a)) & (-2147483648)) == 0)
++
++IN_CLASSA_NET = (-16777216)
++IN_CLASSA_NSHIFT = 24
++IN_CLASSA_HOST = ((-1) & ~IN_CLASSA_NET)
++IN_CLASSA_MAX = 128
++def IN_CLASSB(a): return ((((in_addr_t)(a)) & (-1073741824)) == (-2147483648))
++
++IN_CLASSB_NET = (-65536)
++IN_CLASSB_NSHIFT = 16
++IN_CLASSB_HOST = ((-1) & ~IN_CLASSB_NET)
++IN_CLASSB_MAX = 65536
++def IN_CLASSC(a): return ((((in_addr_t)(a)) & (-536870912)) == (-1073741824))
++
++IN_CLASSC_NET = (-256)
++IN_CLASSC_NSHIFT = 8
++IN_CLASSC_HOST = ((-1) & ~IN_CLASSC_NET)
++def IN_CLASSD(a): return ((((in_addr_t)(a)) & (-268435456)) == (-536870912))
++
++def IN_MULTICAST(a): return IN_CLASSD(a)
++
++def IN_EXPERIMENTAL(a): return ((((in_addr_t)(a)) & (-536870912)) == (-536870912))
++
++def IN_BADCLASS(a): return ((((in_addr_t)(a)) & (-268435456)) == (-268435456))
++
++IN_LOOPBACKNET = 127
++INET_ADDRSTRLEN = 16
++INET6_ADDRSTRLEN = 46
++
++# Included from bits/socket.h
++
++# Included from limits.h
++_LIBC_LIMITS_H_ = 1
++MB_LEN_MAX = 16
++_LIMITS_H = 1
++CHAR_BIT = 8
++SCHAR_MIN = (-128)
++SCHAR_MAX = 127
++UCHAR_MAX = 255
++CHAR_MIN = 0
++CHAR_MAX = UCHAR_MAX
++CHAR_MIN = SCHAR_MIN
++CHAR_MAX = SCHAR_MAX
++SHRT_MIN = (-32768)
++SHRT_MAX = 32767
++USHRT_MAX = 65535
++INT_MAX = 2147483647
++LONG_MAX = 9223372036854775807L
++LONG_MAX = 2147483647L
++LONG_MIN = (-LONG_MAX - 1L)
++
++# Included from bits/posix1_lim.h
++_BITS_POSIX1_LIM_H = 1
++_POSIX_AIO_LISTIO_MAX = 2
++_POSIX_AIO_MAX = 1
++_POSIX_ARG_MAX = 4096
++_POSIX_CHILD_MAX = 6
++_POSIX_DELAYTIMER_MAX = 32
++_POSIX_LINK_MAX = 8
++_POSIX_MAX_CANON = 255
++_POSIX_MAX_INPUT = 255
++_POSIX_MQ_OPEN_MAX = 8
++_POSIX_MQ_PRIO_MAX = 32
++_POSIX_NGROUPS_MAX = 0
++_POSIX_OPEN_MAX = 16
++_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
++_POSIX_NAME_MAX = 14
++_POSIX_PATH_MAX = 256
++_POSIX_PIPE_BUF = 512
++_POSIX_RTSIG_MAX = 8
++_POSIX_SEM_NSEMS_MAX = 256
++_POSIX_SEM_VALUE_MAX = 32767
++_POSIX_SIGQUEUE_MAX = 32
++_POSIX_SSIZE_MAX = 32767
++_POSIX_STREAM_MAX = 8
++_POSIX_TZNAME_MAX = 6
++_POSIX_QLIMIT = 1
++_POSIX_HIWAT = _POSIX_PIPE_BUF
++_POSIX_UIO_MAXIOV = 16
++_POSIX_TTY_NAME_MAX = 9
++_POSIX_TIMER_MAX = 32
++_POSIX_LOGIN_NAME_MAX = 9
++_POSIX_CLOCKRES_MIN = 20000000
++
++# Included from bits/local_lim.h
++
++# Included from linux/limits.h
++NR_OPEN = 1024
++NGROUPS_MAX = 32
++ARG_MAX = 131072
++CHILD_MAX = 999
++OPEN_MAX = 256
++LINK_MAX = 127
++MAX_CANON = 255
++MAX_INPUT = 255
++NAME_MAX = 255
++PATH_MAX = 4096
++PIPE_BUF = 4096
++RTSIG_MAX = 32
++_POSIX_THREAD_KEYS_MAX = 128
++PTHREAD_KEYS_MAX = 1024
++_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
++PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++_POSIX_THREAD_THREADS_MAX = 64
++PTHREAD_THREADS_MAX = 1024
++AIO_PRIO_DELTA_MAX = 20
++PTHREAD_STACK_MIN = 16384
++TIMER_MAX = 256
++SSIZE_MAX = LONG_MAX
++NGROUPS_MAX = _POSIX_NGROUPS_MAX
++
++# Included from bits/posix2_lim.h
++_BITS_POSIX2_LIM_H = 1
++_POSIX2_BC_BASE_MAX = 99
++_POSIX2_BC_DIM_MAX = 2048
++_POSIX2_BC_SCALE_MAX = 99
++_POSIX2_BC_STRING_MAX = 1000
++_POSIX2_COLL_WEIGHTS_MAX = 2
++_POSIX2_EXPR_NEST_MAX = 32
++_POSIX2_LINE_MAX = 2048
++_POSIX2_RE_DUP_MAX = 255
++_POSIX2_CHARCLASS_NAME_MAX = 14
++BC_BASE_MAX = _POSIX2_BC_BASE_MAX
++BC_DIM_MAX = _POSIX2_BC_DIM_MAX
++BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
++BC_STRING_MAX = _POSIX2_BC_STRING_MAX
++COLL_WEIGHTS_MAX = 255
++EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
++LINE_MAX = _POSIX2_LINE_MAX
++CHARCLASS_NAME_MAX = 2048
++RE_DUP_MAX = (0x7fff)
++
++# Included from bits/xopen_lim.h
++_XOPEN_LIM_H = 1
++
++# Included from bits/stdio_lim.h
++L_tmpnam = 20
++TMP_MAX = 238328
++FILENAME_MAX = 4096
++L_ctermid = 9
++L_cuserid = 9
++FOPEN_MAX = 16
++IOV_MAX = 1024
++_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
++NL_ARGMAX = _POSIX_ARG_MAX
++NL_LANGMAX = _POSIX2_LINE_MAX
++NL_MSGMAX = INT_MAX
++NL_NMAX = INT_MAX
++NL_SETMAX = INT_MAX
++NL_TEXTMAX = INT_MAX
++NZERO = 20
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 32
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 64
++LONG_BIT = 32
++from TYPES import *
++PF_UNSPEC = 0
++PF_LOCAL = 1
++PF_UNIX = PF_LOCAL
++PF_FILE = PF_LOCAL
++PF_INET = 2
++PF_AX25 = 3
++PF_IPX = 4
++PF_APPLETALK = 5
++PF_NETROM = 6
++PF_BRIDGE = 7
++PF_ATMPVC = 8
++PF_X25 = 9
++PF_INET6 = 10
++PF_ROSE = 11
++PF_DECnet = 12
++PF_NETBEUI = 13
++PF_SECURITY = 14
++PF_KEY = 15
++PF_NETLINK = 16
++PF_ROUTE = PF_NETLINK
++PF_PACKET = 17
++PF_ASH = 18
++PF_ECONET = 19
++PF_ATMSVC = 20
++PF_SNA = 22
++PF_IRDA = 23
++PF_PPPOX = 24
++PF_WANPIPE = 25
++PF_BLUETOOTH = 31
++PF_MAX = 32
++AF_UNSPEC = PF_UNSPEC
++AF_LOCAL = PF_LOCAL
++AF_UNIX = PF_UNIX
++AF_FILE = PF_FILE
++AF_INET = PF_INET
++AF_AX25 = PF_AX25
++AF_IPX = PF_IPX
++AF_APPLETALK = PF_APPLETALK
++AF_NETROM = PF_NETROM
++AF_BRIDGE = PF_BRIDGE
++AF_ATMPVC = PF_ATMPVC
++AF_X25 = PF_X25
++AF_INET6 = PF_INET6
++AF_ROSE = PF_ROSE
++AF_DECnet = PF_DECnet
++AF_NETBEUI = PF_NETBEUI
++AF_SECURITY = PF_SECURITY
++AF_KEY = PF_KEY
++AF_NETLINK = PF_NETLINK
++AF_ROUTE = PF_ROUTE
++AF_PACKET = PF_PACKET
++AF_ASH = PF_ASH
++AF_ECONET = PF_ECONET
++AF_ATMSVC = PF_ATMSVC
++AF_SNA = PF_SNA
++AF_IRDA = PF_IRDA
++AF_PPPOX = PF_PPPOX
++AF_WANPIPE = PF_WANPIPE
++AF_BLUETOOTH = PF_BLUETOOTH
++AF_MAX = PF_MAX
++SOL_RAW = 255
++SOL_DECNET = 261
++SOL_X25 = 262
++SOL_PACKET = 263
++SOL_ATM = 264
++SOL_AAL = 265
++SOL_IRDA = 266
++SOMAXCONN = 128
++
++# Included from bits/sockaddr.h
++_BITS_SOCKADDR_H = 1
++def __SOCKADDR_COMMON(sa_prefix): return \
++
++_SS_SIZE = 128
++def CMSG_FIRSTHDR(mhdr): return \
++
++
++# Included from asm/socket.h
++
++# Included from asm/sockios.h
++FIOSETOWN = 0x8901
++SIOCSPGRP = 0x8902
++FIOGETOWN = 0x8903
++SIOCGPGRP = 0x8904
++SIOCATMARK = 0x8905
++SIOCGSTAMP = 0x8906
++SOL_SOCKET = 1
++SO_DEBUG = 1
++SO_REUSEADDR = 2
++SO_TYPE = 3
++SO_ERROR = 4
++SO_DONTROUTE = 5
++SO_BROADCAST = 6
++SO_SNDBUF = 7
++SO_RCVBUF = 8
++SO_KEEPALIVE = 9
++SO_OOBINLINE = 10
++SO_NO_CHECK = 11
++SO_PRIORITY = 12
++SO_LINGER = 13
++SO_BSDCOMPAT = 14
++SO_PASSCRED = 16
++SO_PEERCRED = 17
++SO_RCVLOWAT = 18
++SO_SNDLOWAT = 19
++SO_RCVTIMEO = 20
++SO_SNDTIMEO = 21
++SO_SECURITY_AUTHENTICATION = 22
++SO_SECURITY_ENCRYPTION_TRANSPORT = 23
++SO_SECURITY_ENCRYPTION_NETWORK = 24
++SO_BINDTODEVICE = 25
++SO_ATTACH_FILTER = 26
++SO_DETACH_FILTER = 27
++SO_PEERNAME = 28
++SO_TIMESTAMP = 29
++SCM_TIMESTAMP = SO_TIMESTAMP
++SO_ACCEPTCONN = 30
++SOCK_STREAM = 1
++SOCK_DGRAM = 2
++SOCK_RAW = 3
++SOCK_RDM = 4
++SOCK_SEQPACKET = 5
++SOCK_PACKET = 10
++SOCK_MAX = (SOCK_PACKET+1)
++
++# Included from bits/in.h
++IP_TOS = 1
++IP_TTL = 2
++IP_HDRINCL = 3
++IP_OPTIONS = 4
++IP_ROUTER_ALERT = 5
++IP_RECVOPTS = 6
++IP_RETOPTS = 7
++IP_PKTINFO = 8
++IP_PKTOPTIONS = 9
++IP_PMTUDISC = 10
++IP_MTU_DISCOVER = 10
++IP_RECVERR = 11
++IP_RECVTTL = 12
++IP_RECVTOS = 13
++IP_MULTICAST_IF = 32
++IP_MULTICAST_TTL = 33
++IP_MULTICAST_LOOP = 34
++IP_ADD_MEMBERSHIP = 35
++IP_DROP_MEMBERSHIP = 36
++IP_RECVRETOPTS = IP_RETOPTS
++IP_PMTUDISC_DONT = 0
++IP_PMTUDISC_WANT = 1
++IP_PMTUDISC_DO = 2
++SOL_IP = 0
++IP_DEFAULT_MULTICAST_TTL = 1
++IP_DEFAULT_MULTICAST_LOOP = 1
++IP_MAX_MEMBERSHIPS = 20
++IPV6_ADDRFORM = 1
++IPV6_PKTINFO = 2
++IPV6_HOPOPTS = 3
++IPV6_DSTOPTS = 4
++IPV6_RTHDR = 5
++IPV6_PKTOPTIONS = 6
++IPV6_CHECKSUM = 7
++IPV6_HOPLIMIT = 8
++IPV6_NEXTHOP = 9
++IPV6_AUTHHDR = 10
++IPV6_UNICAST_HOPS = 16
++IPV6_MULTICAST_IF = 17
++IPV6_MULTICAST_HOPS = 18
++IPV6_MULTICAST_LOOP = 19
++IPV6_JOIN_GROUP = 20
++IPV6_LEAVE_GROUP = 21
++IPV6_ROUTER_ALERT = 22
++IPV6_MTU_DISCOVER = 23
++IPV6_MTU = 24
++IPV6_RECVERR = 25
++IPV6_RXHOPOPTS = IPV6_HOPOPTS
++IPV6_RXDSTOPTS = IPV6_DSTOPTS
++IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP
++IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP
++IPV6_PMTUDISC_DONT = 0
++IPV6_PMTUDISC_WANT = 1
++IPV6_PMTUDISC_DO = 2
++SOL_IPV6 = 41
++SOL_ICMPV6 = 58
++IPV6_RTHDR_LOOSE = 0
++IPV6_RTHDR_STRICT = 1
++IPV6_RTHDR_TYPE_0 = 0
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return __bswap_constant_16 (x)
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return __bswap_constant_32 (x)
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def ntohl(x): return (x)
++
++def ntohs(x): return (x)
++
++def htonl(x): return (x)
++
++def htons(x): return (x)
++
++def ntohl(x): return __bswap_32 (x)
++
++def ntohs(x): return __bswap_16 (x)
++
++def htonl(x): return __bswap_32 (x)
++
++def htons(x): return __bswap_16 (x)
++
++def IN6_IS_ADDR_UNSPECIFIED(a): return \
++
++def IN6_IS_ADDR_LOOPBACK(a): return \
++
++def IN6_IS_ADDR_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_V4MAPPED(a): return \
++
++def IN6_IS_ADDR_V4COMPAT(a): return \
++
++def IN6_IS_ADDR_MC_NODELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_GLOBAL(a): return
+diff --git a/lib-python/2.7/plat-linux2/IN_hppa.py b/lib-python/2.7/plat-linux2/IN_hppa.py
+new file mode 100644
+index 0000000..71e0b84
+--- /dev/null
++++ b/lib-python/2.7/plat-linux2/IN_hppa.py
+@@ -0,0 +1,615 @@
++# Generated by h2py from /usr/include/netinet/in.h
++_NETINET_IN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 199506L
++_XOPEN_SOURCE = 600
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 2
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __PMT(args): return args
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++
++# Included from gnu/stubs.h
++
++# Included from stdint.h
++_STDINT_H = 1
++
++# Included from bits/wchar.h
++_BITS_WCHAR_H = 1
++__WCHAR_MIN = (-2147483647l - 1l)
++__WCHAR_MAX = (2147483647l)
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++def __INT64_C(c): return c ## L
++
++def __UINT64_C(c): return c ## UL
++
++def __INT64_C(c): return c ## LL
++
++def __UINT64_C(c): return c ## ULL
++
++INT8_MIN = (-128)
++INT16_MIN = (-32767-1)
++INT32_MIN = (-2147483647-1)
++INT64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT8_MAX = (127)
++INT16_MAX = (32767)
++INT32_MAX = (2147483647)
++INT64_MAX = (__INT64_C(9223372036854775807))
++UINT8_MAX = (255)
++UINT16_MAX = (65535)
++UINT64_MAX = (__UINT64_C(18446744073709551615))
++INT_LEAST8_MIN = (-128)
++INT_LEAST16_MIN = (-32767-1)
++INT_LEAST32_MIN = (-2147483647-1)
++INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_LEAST8_MAX = (127)
++INT_LEAST16_MAX = (32767)
++INT_LEAST32_MAX = (2147483647)
++INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_LEAST8_MAX = (255)
++UINT_LEAST16_MAX = (65535)
++UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
++INT_FAST8_MIN = (-128)
++INT_FAST16_MIN = (-9223372036854775807L-1)
++INT_FAST32_MIN = (-9223372036854775807L-1)
++INT_FAST16_MIN = (-2147483647-1)
++INT_FAST32_MIN = (-2147483647-1)
++INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_FAST8_MAX = (127)
++INT_FAST16_MAX = (9223372036854775807L)
++INT_FAST32_MAX = (9223372036854775807L)
++INT_FAST16_MAX = (2147483647)
++INT_FAST32_MAX = (2147483647)
++INT_FAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_FAST8_MAX = (255)
++UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
++INTPTR_MIN = (-9223372036854775807L-1)
++INTPTR_MAX = (9223372036854775807L)
++INTPTR_MIN = (-2147483647-1)
++INTPTR_MAX = (2147483647)
++INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
++INTMAX_MAX = (__INT64_C(9223372036854775807))
++UINTMAX_MAX = (__UINT64_C(18446744073709551615))
++PTRDIFF_MIN = (-9223372036854775807L-1)
++PTRDIFF_MAX = (9223372036854775807L)
++PTRDIFF_MIN = (-2147483647-1)
++PTRDIFF_MAX = (2147483647)
++SIG_ATOMIC_MIN = (-2147483647-1)
++SIG_ATOMIC_MAX = (2147483647)
++WCHAR_MIN = __WCHAR_MIN
++WCHAR_MAX = __WCHAR_MAX
++def INT8_C(c): return c
++
++def INT16_C(c): return c
++
++def INT32_C(c): return c
++
++def INT64_C(c): return c ## L
++
++def INT64_C(c): return c ## LL
++
++def UINT8_C(c): return c ## U
++
++def UINT16_C(c): return c ## U
++
++def UINT32_C(c): return c ## U
++
++def UINT64_C(c): return c ## UL
++
++def UINT64_C(c): return c ## ULL
++
++def INTMAX_C(c): return c ## L
++
++def UINTMAX_C(c): return c ## UL
++
++def INTMAX_C(c): return c ## LL
++
++def UINTMAX_C(c): return c ## ULL
++
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__FD_SETSIZE = 1024
++
++# Included from bits/pthreadtypes.h
++_BITS_PTHREADTYPES_H = 1
++
++# Included from bits/sched.h
++SCHED_OTHER = 0
++SCHED_FIFO = 1
++SCHED_RR = 2
++CSIGNAL = 0x000000ff
++CLONE_VM = 0x00000100
++CLONE_FS = 0x00000200
++CLONE_FILES = 0x00000400
++CLONE_SIGHAND = 0x00000800
++CLONE_PID = 0x00001000
++CLONE_PTRACE = 0x00002000
++CLONE_VFORK = 0x00004000
++__defined_schedparam = 1
++def IN_CLASSA(a): return ((((in_addr_t)(a)) & (-2147483648)) == 0)
++
++IN_CLASSA_NET = (-16777216)
++IN_CLASSA_NSHIFT = 24
++IN_CLASSA_HOST = ((-1) & ~IN_CLASSA_NET)
++IN_CLASSA_MAX = 128
++def IN_CLASSB(a): return ((((in_addr_t)(a)) & (-1073741824)) == (-2147483648))
++
++IN_CLASSB_NET = (-65536)
++IN_CLASSB_NSHIFT = 16
++IN_CLASSB_HOST = ((-1) & ~IN_CLASSB_NET)
++IN_CLASSB_MAX = 65536
++def IN_CLASSC(a): return ((((in_addr_t)(a)) & (-536870912)) == (-1073741824))
++
++IN_CLASSC_NET = (-256)
++IN_CLASSC_NSHIFT = 8
++IN_CLASSC_HOST = ((-1) & ~IN_CLASSC_NET)
++def IN_CLASSD(a): return ((((in_addr_t)(a)) & (-268435456)) == (-536870912))
++
++def IN_MULTICAST(a): return IN_CLASSD(a)
++
++def IN_EXPERIMENTAL(a): return ((((in_addr_t)(a)) & (-536870912)) == (-536870912))
++
++def IN_BADCLASS(a): return ((((in_addr_t)(a)) & (-268435456)) == (-268435456))
++
++IN_LOOPBACKNET = 127
++INET_ADDRSTRLEN = 16
++INET6_ADDRSTRLEN = 46
++
++# Included from bits/socket.h
++
++# Included from limits.h
++_LIBC_LIMITS_H_ = 1
++MB_LEN_MAX = 16
++_LIMITS_H = 1
++CHAR_BIT = 8
++SCHAR_MIN = (-128)
++SCHAR_MAX = 127
++UCHAR_MAX = 255
++CHAR_MIN = 0
++CHAR_MAX = UCHAR_MAX
++CHAR_MIN = SCHAR_MIN
++CHAR_MAX = SCHAR_MAX
++SHRT_MIN = (-32768)
++SHRT_MAX = 32767
++USHRT_MAX = 65535
++INT_MAX = 2147483647
++LONG_MAX = 9223372036854775807L
++LONG_MAX = 2147483647L
++LONG_MIN = (-LONG_MAX - 1L)
++
++# Included from bits/posix1_lim.h
++_BITS_POSIX1_LIM_H = 1
++_POSIX_AIO_LISTIO_MAX = 2
++_POSIX_AIO_MAX = 1
++_POSIX_ARG_MAX = 4096
++_POSIX_CHILD_MAX = 6
++_POSIX_DELAYTIMER_MAX = 32
++_POSIX_LINK_MAX = 8
++_POSIX_MAX_CANON = 255
++_POSIX_MAX_INPUT = 255
++_POSIX_MQ_OPEN_MAX = 8
++_POSIX_MQ_PRIO_MAX = 32
++_POSIX_NGROUPS_MAX = 0
++_POSIX_OPEN_MAX = 16
++_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
++_POSIX_NAME_MAX = 14
++_POSIX_PATH_MAX = 256
++_POSIX_PIPE_BUF = 512
++_POSIX_RTSIG_MAX = 8
++_POSIX_SEM_NSEMS_MAX = 256
++_POSIX_SEM_VALUE_MAX = 32767
++_POSIX_SIGQUEUE_MAX = 32
++_POSIX_SSIZE_MAX = 32767
++_POSIX_STREAM_MAX = 8
++_POSIX_TZNAME_MAX = 6
++_POSIX_QLIMIT = 1
++_POSIX_HIWAT = _POSIX_PIPE_BUF
++_POSIX_UIO_MAXIOV = 16
++_POSIX_TTY_NAME_MAX = 9
++_POSIX_TIMER_MAX = 32
++_POSIX_LOGIN_NAME_MAX = 9
++_POSIX_CLOCKRES_MIN = 20000000
++
++# Included from bits/local_lim.h
++
++# Included from linux/limits.h
++NR_OPEN = 1024
++NGROUPS_MAX = 32
++ARG_MAX = 131072
++CHILD_MAX = 999
++OPEN_MAX = 256
++LINK_MAX = 127
++MAX_CANON = 255
++MAX_INPUT = 255
++NAME_MAX = 255
++PATH_MAX = 4096
++PIPE_BUF = 4096
++RTSIG_MAX = 32
++_POSIX_THREAD_KEYS_MAX = 128
++PTHREAD_KEYS_MAX = 1024
++_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
++PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++_POSIX_THREAD_THREADS_MAX = 64
++PTHREAD_THREADS_MAX = 1024
++AIO_PRIO_DELTA_MAX = 20
++PTHREAD_STACK_MIN = 16384
++TIMER_MAX = 256
++SSIZE_MAX = LONG_MAX
++NGROUPS_MAX = _POSIX_NGROUPS_MAX
++
++# Included from bits/posix2_lim.h
++_BITS_POSIX2_LIM_H = 1
++_POSIX2_BC_BASE_MAX = 99
++_POSIX2_BC_DIM_MAX = 2048
++_POSIX2_BC_SCALE_MAX = 99
++_POSIX2_BC_STRING_MAX = 1000
++_POSIX2_COLL_WEIGHTS_MAX = 2
++_POSIX2_EXPR_NEST_MAX = 32
++_POSIX2_LINE_MAX = 2048
++_POSIX2_RE_DUP_MAX = 255
++_POSIX2_CHARCLASS_NAME_MAX = 14
++BC_BASE_MAX = _POSIX2_BC_BASE_MAX
++BC_DIM_MAX = _POSIX2_BC_DIM_MAX
++BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
++BC_STRING_MAX = _POSIX2_BC_STRING_MAX
++COLL_WEIGHTS_MAX = 255
++EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
++LINE_MAX = _POSIX2_LINE_MAX
++CHARCLASS_NAME_MAX = 2048
++RE_DUP_MAX = (0x7fff)
++
++# Included from bits/xopen_lim.h
++_XOPEN_LIM_H = 1
++
++# Included from bits/stdio_lim.h
++L_tmpnam = 20
++TMP_MAX = 238328
++FILENAME_MAX = 4096
++L_ctermid = 9
++L_cuserid = 9
++FOPEN_MAX = 16
++IOV_MAX = 1024
++_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
++NL_ARGMAX = _POSIX_ARG_MAX
++NL_LANGMAX = _POSIX2_LINE_MAX
++NL_MSGMAX = INT_MAX
++NL_NMAX = INT_MAX
++NL_SETMAX = INT_MAX
++NL_TEXTMAX = INT_MAX
++NZERO = 20
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 32
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 64
++LONG_BIT = 32
++from TYPES import *
++PF_UNSPEC = 0
++PF_LOCAL = 1
++PF_UNIX = PF_LOCAL
++PF_FILE = PF_LOCAL
++PF_INET = 2
++PF_AX25 = 3
++PF_IPX = 4
++PF_APPLETALK = 5
++PF_NETROM = 6
++PF_BRIDGE = 7
++PF_ATMPVC = 8
++PF_X25 = 9
++PF_INET6 = 10
++PF_ROSE = 11
++PF_DECnet = 12
++PF_NETBEUI = 13
++PF_SECURITY = 14
++PF_KEY = 15
++PF_NETLINK = 16
++PF_ROUTE = PF_NETLINK
++PF_PACKET = 17
++PF_ASH = 18
++PF_ECONET = 19
++PF_ATMSVC = 20
++PF_SNA = 22
++PF_IRDA = 23
++PF_PPPOX = 24
++PF_WANPIPE = 25
++PF_BLUETOOTH = 31
++PF_MAX = 32
++AF_UNSPEC = PF_UNSPEC
++AF_LOCAL = PF_LOCAL
++AF_UNIX = PF_UNIX
++AF_FILE = PF_FILE
++AF_INET = PF_INET
++AF_AX25 = PF_AX25
++AF_IPX = PF_IPX
++AF_APPLETALK = PF_APPLETALK
++AF_NETROM = PF_NETROM
++AF_BRIDGE = PF_BRIDGE
++AF_ATMPVC = PF_ATMPVC
++AF_X25 = PF_X25
++AF_INET6 = PF_INET6
++AF_ROSE = PF_ROSE
++AF_DECnet = PF_DECnet
++AF_NETBEUI = PF_NETBEUI
++AF_SECURITY = PF_SECURITY
++AF_KEY = PF_KEY
++AF_NETLINK = PF_NETLINK
++AF_ROUTE = PF_ROUTE
++AF_PACKET = PF_PACKET
++AF_ASH = PF_ASH
++AF_ECONET = PF_ECONET
++AF_ATMSVC = PF_ATMSVC
++AF_SNA = PF_SNA
++AF_IRDA = PF_IRDA
++AF_PPPOX = PF_PPPOX
++AF_WANPIPE = PF_WANPIPE
++AF_BLUETOOTH = PF_BLUETOOTH
++AF_MAX = PF_MAX
++SOL_RAW = 255
++SOL_DECNET = 261
++SOL_X25 = 262
++SOL_PACKET = 263
++SOL_ATM = 264
++SOL_AAL = 265
++SOL_IRDA = 266
++SOMAXCONN = 128
++
++# Included from bits/sockaddr.h
++_BITS_SOCKADDR_H = 1
++def __SOCKADDR_COMMON(sa_prefix): return \
++
++_SS_SIZE = 128
++def CMSG_FIRSTHDR(mhdr): return \
++
++
++# Included from asm/socket.h
++
++# Included from asm/sockios.h
++FIOSETOWN = 0x8901
++SIOCSPGRP = 0x8902
++FIOGETOWN = 0x8903
++SIOCGPGRP = 0x8904
++SIOCATMARK = 0x8905
++SIOCGSTAMP = 0x8906
++SOL_SOCKET = 0xffff
++SO_DEBUG = 0x0001
++SO_REUSEADDR = 0x0004
++SO_TYPE = 0x1008
++SO_ERROR = 0x1007
++SO_DONTROUTE = 0x0010
++SO_BROADCAST = 0x0020
++SO_SNDBUF = 0x1001
++SO_RCVBUF = 0x1002
++SO_KEEPALIVE = 0x0008
++SO_OOBINLINE = 0x0100
++SO_NO_CHECK = 0x400b
++SO_PRIORITY = 0x400c
++SO_LINGER = 0x0080
++SO_BSDCOMPAT = 0x400e
++SO_PASSCRED = 0x4010
++SO_PEERCRED = 0x4011
++SO_RCVLOWAT = 0x1004
++SO_SNDLOWAT = 0x1003
++SO_RCVTIMEO = 0x1006
++SO_SNDTIMEO = 0x1005
++SO_SECURITY_AUTHENTICATION = 0x4016
++SO_SECURITY_ENCRYPTION_TRANSPORT = 0x4017
++SO_SECURITY_ENCRYPTION_NETWORK = 0x4018
++SO_BINDTODEVICE = 0x4019
++SO_ATTACH_FILTER = 0x401a
++SO_DETACH_FILTER = 0x401b
++SO_PEERNAME = 0x2000
++SO_TIMESTAMP = 0x4012
++SCM_TIMESTAMP = SO_TIMESTAMP
++SO_ACCEPTCONN = 0x401c
++SOCK_STREAM = 1
++SOCK_DGRAM = 2
++SOCK_RAW = 3
++SOCK_RDM = 4
++SOCK_SEQPACKET = 5
++SOCK_PACKET = 10
++SOCK_MAX = (SOCK_PACKET+1)
++
++# Included from bits/in.h
++IP_TOS = 1
++IP_TTL = 2
++IP_HDRINCL = 3
++IP_OPTIONS = 4
++IP_ROUTER_ALERT = 5
++IP_RECVOPTS = 6
++IP_RETOPTS = 7
++IP_PKTINFO = 8
++IP_PKTOPTIONS = 9
++IP_PMTUDISC = 10
++IP_MTU_DISCOVER = 10
++IP_RECVERR = 11
++IP_RECVTTL = 12
++IP_RECVTOS = 13
++IP_MULTICAST_IF = 32
++IP_MULTICAST_TTL = 33
++IP_MULTICAST_LOOP = 34
++IP_ADD_MEMBERSHIP = 35
++IP_DROP_MEMBERSHIP = 36
++IP_RECVRETOPTS = IP_RETOPTS
++IP_PMTUDISC_DONT = 0
++IP_PMTUDISC_WANT = 1
++IP_PMTUDISC_DO = 2
++SOL_IP = 0
++IP_DEFAULT_MULTICAST_TTL = 1
++IP_DEFAULT_MULTICAST_LOOP = 1
++IP_MAX_MEMBERSHIPS = 20
++IPV6_ADDRFORM = 1
++IPV6_PKTINFO = 2
++IPV6_HOPOPTS = 3
++IPV6_DSTOPTS = 4
++IPV6_RTHDR = 5
++IPV6_PKTOPTIONS = 6
++IPV6_CHECKSUM = 7
++IPV6_HOPLIMIT = 8
++IPV6_NEXTHOP = 9
++IPV6_AUTHHDR = 10
++IPV6_UNICAST_HOPS = 16
++IPV6_MULTICAST_IF = 17
++IPV6_MULTICAST_HOPS = 18
++IPV6_MULTICAST_LOOP = 19
++IPV6_JOIN_GROUP = 20
++IPV6_LEAVE_GROUP = 21
++IPV6_ROUTER_ALERT = 22
++IPV6_MTU_DISCOVER = 23
++IPV6_MTU = 24
++IPV6_RECVERR = 25
++IPV6_RXHOPOPTS = IPV6_HOPOPTS
++IPV6_RXDSTOPTS = IPV6_DSTOPTS
++IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP
++IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP
++IPV6_PMTUDISC_DONT = 0
++IPV6_PMTUDISC_WANT = 1
++IPV6_PMTUDISC_DO = 2
++SOL_IPV6 = 41
++SOL_ICMPV6 = 58
++IPV6_RTHDR_LOOSE = 0
++IPV6_RTHDR_STRICT = 1
++IPV6_RTHDR_TYPE_0 = 0
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return __bswap_constant_16 (x)
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return __bswap_constant_32 (x)
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def ntohl(x): return (x)
++
++def ntohs(x): return (x)
++
++def htonl(x): return (x)
++
++def htons(x): return (x)
++
++def ntohl(x): return __bswap_32 (x)
++
++def ntohs(x): return __bswap_16 (x)
++
++def htonl(x): return __bswap_32 (x)
++
++def htons(x): return __bswap_16 (x)
++
++def IN6_IS_ADDR_UNSPECIFIED(a): return \
++
++def IN6_IS_ADDR_LOOPBACK(a): return \
++
++def IN6_IS_ADDR_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_V4MAPPED(a): return \
++
++def IN6_IS_ADDR_V4COMPAT(a): return \
++
++def IN6_IS_ADDR_MC_NODELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_GLOBAL(a): return
+diff --git a/lib-python/2.7/plat-linux2/IN_mips.py b/lib-python/2.7/plat-linux2/IN_mips.py
+new file mode 100644
+index 0000000..514a13e
+--- /dev/null
++++ b/lib-python/2.7/plat-linux2/IN_mips.py
+@@ -0,0 +1,615 @@
++# Generated by h2py from /usr/include/netinet/in.h
++_NETINET_IN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 199506L
++_XOPEN_SOURCE = 600
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 2
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __PMT(args): return args
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++
++# Included from gnu/stubs.h
++
++# Included from stdint.h
++_STDINT_H = 1
++
++# Included from bits/wchar.h
++_BITS_WCHAR_H = 1
++__WCHAR_MIN = (-2147483647l - 1l)
++__WCHAR_MAX = (2147483647l)
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++def __INT64_C(c): return c ## L
++
++def __UINT64_C(c): return c ## UL
++
++def __INT64_C(c): return c ## LL
++
++def __UINT64_C(c): return c ## ULL
++
++INT8_MIN = (-128)
++INT16_MIN = (-32767-1)
++INT32_MIN = (-2147483647-1)
++INT64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT8_MAX = (127)
++INT16_MAX = (32767)
++INT32_MAX = (2147483647)
++INT64_MAX = (__INT64_C(9223372036854775807))
++UINT8_MAX = (255)
++UINT16_MAX = (65535)
++UINT64_MAX = (__UINT64_C(18446744073709551615))
++INT_LEAST8_MIN = (-128)
++INT_LEAST16_MIN = (-32767-1)
++INT_LEAST32_MIN = (-2147483647-1)
++INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_LEAST8_MAX = (127)
++INT_LEAST16_MAX = (32767)
++INT_LEAST32_MAX = (2147483647)
++INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_LEAST8_MAX = (255)
++UINT_LEAST16_MAX = (65535)
++UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
++INT_FAST8_MIN = (-128)
++INT_FAST16_MIN = (-9223372036854775807L-1)
++INT_FAST32_MIN = (-9223372036854775807L-1)
++INT_FAST16_MIN = (-2147483647-1)
++INT_FAST32_MIN = (-2147483647-1)
++INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_FAST8_MAX = (127)
++INT_FAST16_MAX = (9223372036854775807L)
++INT_FAST32_MAX = (9223372036854775807L)
++INT_FAST16_MAX = (2147483647)
++INT_FAST32_MAX = (2147483647)
++INT_FAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_FAST8_MAX = (255)
++UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
++INTPTR_MIN = (-9223372036854775807L-1)
++INTPTR_MAX = (9223372036854775807L)
++INTPTR_MIN = (-2147483647-1)
++INTPTR_MAX = (2147483647)
++INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
++INTMAX_MAX = (__INT64_C(9223372036854775807))
++UINTMAX_MAX = (__UINT64_C(18446744073709551615))
++PTRDIFF_MIN = (-9223372036854775807L-1)
++PTRDIFF_MAX = (9223372036854775807L)
++PTRDIFF_MIN = (-2147483647-1)
++PTRDIFF_MAX = (2147483647)
++SIG_ATOMIC_MIN = (-2147483647-1)
++SIG_ATOMIC_MAX = (2147483647)
++WCHAR_MIN = __WCHAR_MIN
++WCHAR_MAX = __WCHAR_MAX
++def INT8_C(c): return c
++
++def INT16_C(c): return c
++
++def INT32_C(c): return c
++
++def INT64_C(c): return c ## L
++
++def INT64_C(c): return c ## LL
++
++def UINT8_C(c): return c ## U
++
++def UINT16_C(c): return c ## U
++
++def UINT32_C(c): return c ## U
++
++def UINT64_C(c): return c ## UL
++
++def UINT64_C(c): return c ## ULL
++
++def INTMAX_C(c): return c ## L
++
++def UINTMAX_C(c): return c ## UL
++
++def INTMAX_C(c): return c ## LL
++
++def UINTMAX_C(c): return c ## ULL
++
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__FD_SETSIZE = 1024
++
++# Included from bits/pthreadtypes.h
++_BITS_PTHREADTYPES_H = 1
++
++# Included from bits/sched.h
++SCHED_OTHER = 0
++SCHED_FIFO = 1
++SCHED_RR = 2
++CSIGNAL = 0x000000ff
++CLONE_VM = 0x00000100
++CLONE_FS = 0x00000200
++CLONE_FILES = 0x00000400
++CLONE_SIGHAND = 0x00000800
++CLONE_PID = 0x00001000
++CLONE_PTRACE = 0x00002000
++CLONE_VFORK = 0x00004000
++__defined_schedparam = 1
++def IN_CLASSA(a): return ((((in_addr_t)(a)) & (-2147483648)) == 0)
++
++IN_CLASSA_NET = (-16777216)
++IN_CLASSA_NSHIFT = 24
++IN_CLASSA_HOST = ((-1) & ~IN_CLASSA_NET)
++IN_CLASSA_MAX = 128
++def IN_CLASSB(a): return ((((in_addr_t)(a)) & (-1073741824)) == (-2147483648))
++
++IN_CLASSB_NET = (-65536)
++IN_CLASSB_NSHIFT = 16
++IN_CLASSB_HOST = ((-1) & ~IN_CLASSB_NET)
++IN_CLASSB_MAX = 65536
++def IN_CLASSC(a): return ((((in_addr_t)(a)) & (-536870912)) == (-1073741824))
++
++IN_CLASSC_NET = (-256)
++IN_CLASSC_NSHIFT = 8
++IN_CLASSC_HOST = ((-1) & ~IN_CLASSC_NET)
++def IN_CLASSD(a): return ((((in_addr_t)(a)) & (-268435456)) == (-536870912))
++
++def IN_MULTICAST(a): return IN_CLASSD(a)
++
++def IN_EXPERIMENTAL(a): return ((((in_addr_t)(a)) & (-536870912)) == (-536870912))
++
++def IN_BADCLASS(a): return ((((in_addr_t)(a)) & (-268435456)) == (-268435456))
++
++IN_LOOPBACKNET = 127
++INET_ADDRSTRLEN = 16
++INET6_ADDRSTRLEN = 46
++
++# Included from bits/socket.h
++
++# Included from limits.h
++_LIBC_LIMITS_H_ = 1
++MB_LEN_MAX = 16
++_LIMITS_H = 1
++CHAR_BIT = 8
++SCHAR_MIN = (-128)
++SCHAR_MAX = 127
++UCHAR_MAX = 255
++CHAR_MIN = 0
++CHAR_MAX = UCHAR_MAX
++CHAR_MIN = SCHAR_MIN
++CHAR_MAX = SCHAR_MAX
++SHRT_MIN = (-32768)
++SHRT_MAX = 32767
++USHRT_MAX = 65535
++INT_MAX = 2147483647
++LONG_MAX = 9223372036854775807L
++LONG_MAX = 2147483647L
++LONG_MIN = (-LONG_MAX - 1L)
++
++# Included from bits/posix1_lim.h
++_BITS_POSIX1_LIM_H = 1
++_POSIX_AIO_LISTIO_MAX = 2
++_POSIX_AIO_MAX = 1
++_POSIX_ARG_MAX = 4096
++_POSIX_CHILD_MAX = 6
++_POSIX_DELAYTIMER_MAX = 32
++_POSIX_LINK_MAX = 8
++_POSIX_MAX_CANON = 255
++_POSIX_MAX_INPUT = 255
++_POSIX_MQ_OPEN_MAX = 8
++_POSIX_MQ_PRIO_MAX = 32
++_POSIX_NGROUPS_MAX = 0
++_POSIX_OPEN_MAX = 16
++_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
++_POSIX_NAME_MAX = 14
++_POSIX_PATH_MAX = 256
++_POSIX_PIPE_BUF = 512
++_POSIX_RTSIG_MAX = 8
++_POSIX_SEM_NSEMS_MAX = 256
++_POSIX_SEM_VALUE_MAX = 32767
++_POSIX_SIGQUEUE_MAX = 32
++_POSIX_SSIZE_MAX = 32767
++_POSIX_STREAM_MAX = 8
++_POSIX_TZNAME_MAX = 6
++_POSIX_QLIMIT = 1
++_POSIX_HIWAT = _POSIX_PIPE_BUF
++_POSIX_UIO_MAXIOV = 16
++_POSIX_TTY_NAME_MAX = 9
++_POSIX_TIMER_MAX = 32
++_POSIX_LOGIN_NAME_MAX = 9
++_POSIX_CLOCKRES_MIN = 20000000
++
++# Included from bits/local_lim.h
++
++# Included from linux/limits.h
++NR_OPEN = 1024
++NGROUPS_MAX = 32
++ARG_MAX = 131072
++CHILD_MAX = 999
++OPEN_MAX = 256
++LINK_MAX = 127
++MAX_CANON = 255
++MAX_INPUT = 255
++NAME_MAX = 255
++PATH_MAX = 4096
++PIPE_BUF = 4096
++RTSIG_MAX = 32
++_POSIX_THREAD_KEYS_MAX = 128
++PTHREAD_KEYS_MAX = 1024
++_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
++PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++_POSIX_THREAD_THREADS_MAX = 64
++PTHREAD_THREADS_MAX = 1024
++AIO_PRIO_DELTA_MAX = 20
++PTHREAD_STACK_MIN = 16384
++TIMER_MAX = 256
++SSIZE_MAX = LONG_MAX
++NGROUPS_MAX = _POSIX_NGROUPS_MAX
++
++# Included from bits/posix2_lim.h
++_BITS_POSIX2_LIM_H = 1
++_POSIX2_BC_BASE_MAX = 99
++_POSIX2_BC_DIM_MAX = 2048
++_POSIX2_BC_SCALE_MAX = 99
++_POSIX2_BC_STRING_MAX = 1000
++_POSIX2_COLL_WEIGHTS_MAX = 2
++_POSIX2_EXPR_NEST_MAX = 32
++_POSIX2_LINE_MAX = 2048
++_POSIX2_RE_DUP_MAX = 255
++_POSIX2_CHARCLASS_NAME_MAX = 14
++BC_BASE_MAX = _POSIX2_BC_BASE_MAX
++BC_DIM_MAX = _POSIX2_BC_DIM_MAX
++BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
++BC_STRING_MAX = _POSIX2_BC_STRING_MAX
++COLL_WEIGHTS_MAX = 255
++EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
++LINE_MAX = _POSIX2_LINE_MAX
++CHARCLASS_NAME_MAX = 2048
++RE_DUP_MAX = (0x7fff)
++
++# Included from bits/xopen_lim.h
++_XOPEN_LIM_H = 1
++
++# Included from bits/stdio_lim.h
++L_tmpnam = 20
++TMP_MAX = 238328
++FILENAME_MAX = 4096
++L_ctermid = 9
++L_cuserid = 9
++FOPEN_MAX = 16
++IOV_MAX = 1024
++_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
++NL_ARGMAX = _POSIX_ARG_MAX
++NL_LANGMAX = _POSIX2_LINE_MAX
++NL_MSGMAX = INT_MAX
++NL_NMAX = INT_MAX
++NL_SETMAX = INT_MAX
++NL_TEXTMAX = INT_MAX
++NZERO = 20
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 32
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 64
++LONG_BIT = 32
++from TYPES import *
++PF_UNSPEC = 0
++PF_LOCAL = 1
++PF_UNIX = PF_LOCAL
++PF_FILE = PF_LOCAL
++PF_INET = 2
++PF_AX25 = 3
++PF_IPX = 4
++PF_APPLETALK = 5
++PF_NETROM = 6
++PF_BRIDGE = 7
++PF_ATMPVC = 8
++PF_X25 = 9
++PF_INET6 = 10
++PF_ROSE = 11
++PF_DECnet = 12
++PF_NETBEUI = 13
++PF_SECURITY = 14
++PF_KEY = 15
++PF_NETLINK = 16
++PF_ROUTE = PF_NETLINK
++PF_PACKET = 17
++PF_ASH = 18
++PF_ECONET = 19
++PF_ATMSVC = 20
++PF_SNA = 22
++PF_IRDA = 23
++PF_PPPOX = 24
++PF_WANPIPE = 25
++PF_BLUETOOTH = 31
++PF_MAX = 32
++AF_UNSPEC = PF_UNSPEC
++AF_LOCAL = PF_LOCAL
++AF_UNIX = PF_UNIX
++AF_FILE = PF_FILE
++AF_INET = PF_INET
++AF_AX25 = PF_AX25
++AF_IPX = PF_IPX
++AF_APPLETALK = PF_APPLETALK
++AF_NETROM = PF_NETROM
++AF_BRIDGE = PF_BRIDGE
++AF_ATMPVC = PF_ATMPVC
++AF_X25 = PF_X25
++AF_INET6 = PF_INET6
++AF_ROSE = PF_ROSE
++AF_DECnet = PF_DECnet
++AF_NETBEUI = PF_NETBEUI
++AF_SECURITY = PF_SECURITY
++AF_KEY = PF_KEY
++AF_NETLINK = PF_NETLINK
++AF_ROUTE = PF_ROUTE
++AF_PACKET = PF_PACKET
++AF_ASH = PF_ASH
++AF_ECONET = PF_ECONET
++AF_ATMSVC = PF_ATMSVC
++AF_SNA = PF_SNA
++AF_IRDA = PF_IRDA
++AF_PPPOX = PF_PPPOX
++AF_WANPIPE = PF_WANPIPE
++AF_BLUETOOTH = PF_BLUETOOTH
++AF_MAX = PF_MAX
++SOL_RAW = 255
++SOL_DECNET = 261
++SOL_X25 = 262
++SOL_PACKET = 263
++SOL_ATM = 264
++SOL_AAL = 265
++SOL_IRDA = 266
++SOMAXCONN = 128
++
++# Included from bits/sockaddr.h
++_BITS_SOCKADDR_H = 1
++def __SOCKADDR_COMMON(sa_prefix): return \
++
++_SS_SIZE = 128
++def CMSG_FIRSTHDR(mhdr): return \
++
++
++# Included from asm/socket.h
++
++# Included from asm/sockios.h
++FIOSETOWN = 0x8004667c
++SIOCSPGRP = 0x80047308
++FIOGETOWN = 0x4004667b
++SIOCGPGRP = 0x40047309
++SIOCATMARK = 0x40047307
++SIOCGSTAMP = 0x8906
++SOL_SOCKET = 0xffff
++SO_DEBUG = 0x0001
++SO_REUSEADDR = 0x0004
++SO_TYPE = 0x1008
++SO_ERROR = 0x1007
++SO_DONTROUTE = 0x0010
++SO_BROADCAST = 0x0020
++SO_SNDBUF = 0x1001
++SO_RCVBUF = 0x1002
++SO_KEEPALIVE = 0x0008
++SO_OOBINLINE = 0x0100
++SO_NO_CHECK = 11
++SO_PRIORITY = 12
++SO_LINGER = 0x0080
++SO_BSDCOMPAT = 14
++SO_PASSCRED = 17
++SO_PEERCRED = 18
++SO_RCVLOWAT = 0x1004
++SO_SNDLOWAT = 0x1003
++SO_RCVTIMEO = 0x1006
++SO_SNDTIMEO = 0x1005
++SO_SECURITY_AUTHENTICATION = 22
++SO_SECURITY_ENCRYPTION_TRANSPORT = 23
++SO_SECURITY_ENCRYPTION_NETWORK = 24
++SO_BINDTODEVICE = 25
++SO_ATTACH_FILTER = 26
++SO_DETACH_FILTER = 27
++SO_PEERNAME = 28
++SO_TIMESTAMP = 29
++SCM_TIMESTAMP = SO_TIMESTAMP
++SO_ACCEPTCONN = 0x1009
++SOCK_STREAM = 2
++SOCK_DGRAM = 1
++SOCK_RAW = 3
++SOCK_RDM = 4
++SOCK_SEQPACKET = 5
++SOCK_PACKET = 10
++SOCK_MAX = (SOCK_PACKET+1)
++
++# Included from bits/in.h
++IP_TOS = 1
++IP_TTL = 2
++IP_HDRINCL = 3
++IP_OPTIONS = 4
++IP_ROUTER_ALERT = 5
++IP_RECVOPTS = 6
++IP_RETOPTS = 7
++IP_PKTINFO = 8
++IP_PKTOPTIONS = 9
++IP_PMTUDISC = 10
++IP_MTU_DISCOVER = 10
++IP_RECVERR = 11
++IP_RECVTTL = 12
++IP_RECVTOS = 13
++IP_MULTICAST_IF = 32
++IP_MULTICAST_TTL = 33
++IP_MULTICAST_LOOP = 34
++IP_ADD_MEMBERSHIP = 35
++IP_DROP_MEMBERSHIP = 36
++IP_RECVRETOPTS = IP_RETOPTS
++IP_PMTUDISC_DONT = 0
++IP_PMTUDISC_WANT = 1
++IP_PMTUDISC_DO = 2
++SOL_IP = 0
++IP_DEFAULT_MULTICAST_TTL = 1
++IP_DEFAULT_MULTICAST_LOOP = 1
++IP_MAX_MEMBERSHIPS = 20
++IPV6_ADDRFORM = 1
++IPV6_PKTINFO = 2
++IPV6_HOPOPTS = 3
++IPV6_DSTOPTS = 4
++IPV6_RTHDR = 5
++IPV6_PKTOPTIONS = 6
++IPV6_CHECKSUM = 7
++IPV6_HOPLIMIT = 8
++IPV6_NEXTHOP = 9
++IPV6_AUTHHDR = 10
++IPV6_UNICAST_HOPS = 16
++IPV6_MULTICAST_IF = 17
++IPV6_MULTICAST_HOPS = 18
++IPV6_MULTICAST_LOOP = 19
++IPV6_JOIN_GROUP = 20
++IPV6_LEAVE_GROUP = 21
++IPV6_ROUTER_ALERT = 22
++IPV6_MTU_DISCOVER = 23
++IPV6_MTU = 24
++IPV6_RECVERR = 25
++IPV6_RXHOPOPTS = IPV6_HOPOPTS
++IPV6_RXDSTOPTS = IPV6_DSTOPTS
++IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP
++IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP
++IPV6_PMTUDISC_DONT = 0
++IPV6_PMTUDISC_WANT = 1
++IPV6_PMTUDISC_DO = 2
++SOL_IPV6 = 41
++SOL_ICMPV6 = 58
++IPV6_RTHDR_LOOSE = 0
++IPV6_RTHDR_STRICT = 1
++IPV6_RTHDR_TYPE_0 = 0
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return __bswap_constant_16 (x)
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return __bswap_constant_32 (x)
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def ntohl(x): return (x)
++
++def ntohs(x): return (x)
++
++def htonl(x): return (x)
++
++def htons(x): return (x)
++
++def ntohl(x): return __bswap_32 (x)
++
++def ntohs(x): return __bswap_16 (x)
++
++def htonl(x): return __bswap_32 (x)
++
++def htons(x): return __bswap_16 (x)
++
++def IN6_IS_ADDR_UNSPECIFIED(a): return \
++
++def IN6_IS_ADDR_LOOPBACK(a): return \
++
++def IN6_IS_ADDR_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_V4MAPPED(a): return \
++
++def IN6_IS_ADDR_V4COMPAT(a): return \
++
++def IN6_IS_ADDR_MC_NODELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_GLOBAL(a): return
+diff --git a/lib-python/2.7/plat-linux2/IN_sparc.py b/lib-python/2.7/plat-linux2/IN_sparc.py
+new file mode 100644
+index 0000000..294128c
+--- /dev/null
++++ b/lib-python/2.7/plat-linux2/IN_sparc.py
+@@ -0,0 +1,615 @@
++# Generated by h2py from /usr/include/netinet/in.h
++_NETINET_IN_H = 1
++
++# Included from features.h
++_FEATURES_H = 1
++__USE_ANSI = 1
++__FAVOR_BSD = 1
++_ISOC99_SOURCE = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 199506L
++_XOPEN_SOURCE = 600
++_XOPEN_SOURCE_EXTENDED = 1
++_LARGEFILE64_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++_BSD_SOURCE = 1
++_SVID_SOURCE = 1
++__USE_ISOC99 = 1
++_POSIX_SOURCE = 1
++_POSIX_C_SOURCE = 2
++_POSIX_C_SOURCE = 199506L
++__USE_POSIX = 1
++__USE_POSIX2 = 1
++__USE_POSIX199309 = 1
++__USE_POSIX199506 = 1
++__USE_XOPEN = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_UNIX98 = 1
++_LARGEFILE_SOURCE = 1
++__USE_XOPEN2K = 1
++__USE_ISOC99 = 1
++__USE_XOPEN_EXTENDED = 1
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_FILE_OFFSET64 = 1
++__USE_MISC = 1
++__USE_BSD = 1
++__USE_SVID = 1
++__USE_GNU = 1
++__USE_REENTRANT = 1
++__STDC_IEC_559__ = 1
++__STDC_IEC_559_COMPLEX__ = 1
++__STDC_ISO_10646__ = 200009L
++__GNU_LIBRARY__ = 6
++__GLIBC__ = 2
++__GLIBC_MINOR__ = 2
++
++# Included from sys/cdefs.h
++_SYS_CDEFS_H = 1
++def __PMT(args): return args
++
++def __P(args): return args
++
++def __PMT(args): return args
++
++def __STRING(x): return #x
++
++__flexarr = []
++__flexarr = [0]
++__flexarr = []
++__flexarr = [1]
++def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
++
++def __attribute__(xyz): return
++
++def __attribute_format_arg__(x): return __attribute__ ((__format_arg__ (x)))
++
++def __attribute_format_arg__(x): return
++
++__USE_LARGEFILE = 1
++__USE_LARGEFILE64 = 1
++__USE_EXTERN_INLINES = 1
++
++# Included from gnu/stubs.h
++
++# Included from stdint.h
++_STDINT_H = 1
++
++# Included from bits/wchar.h
++_BITS_WCHAR_H = 1
++__WCHAR_MIN = (-2147483647l - 1l)
++__WCHAR_MAX = (2147483647l)
++
++# Included from bits/wordsize.h
++__WORDSIZE = 32
++def __INT64_C(c): return c ## L
++
++def __UINT64_C(c): return c ## UL
++
++def __INT64_C(c): return c ## LL
++
++def __UINT64_C(c): return c ## ULL
++
++INT8_MIN = (-128)
++INT16_MIN = (-32767-1)
++INT32_MIN = (-2147483647-1)
++INT64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT8_MAX = (127)
++INT16_MAX = (32767)
++INT32_MAX = (2147483647)
++INT64_MAX = (__INT64_C(9223372036854775807))
++UINT8_MAX = (255)
++UINT16_MAX = (65535)
++UINT64_MAX = (__UINT64_C(18446744073709551615))
++INT_LEAST8_MIN = (-128)
++INT_LEAST16_MIN = (-32767-1)
++INT_LEAST32_MIN = (-2147483647-1)
++INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_LEAST8_MAX = (127)
++INT_LEAST16_MAX = (32767)
++INT_LEAST32_MAX = (2147483647)
++INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_LEAST8_MAX = (255)
++UINT_LEAST16_MAX = (65535)
++UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
++INT_FAST8_MIN = (-128)
++INT_FAST16_MIN = (-9223372036854775807L-1)
++INT_FAST32_MIN = (-9223372036854775807L-1)
++INT_FAST16_MIN = (-2147483647-1)
++INT_FAST32_MIN = (-2147483647-1)
++INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
++INT_FAST8_MAX = (127)
++INT_FAST16_MAX = (9223372036854775807L)
++INT_FAST32_MAX = (9223372036854775807L)
++INT_FAST16_MAX = (2147483647)
++INT_FAST32_MAX = (2147483647)
++INT_FAST64_MAX = (__INT64_C(9223372036854775807))
++UINT_FAST8_MAX = (255)
++UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
++INTPTR_MIN = (-9223372036854775807L-1)
++INTPTR_MAX = (9223372036854775807L)
++INTPTR_MIN = (-2147483647-1)
++INTPTR_MAX = (2147483647)
++INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
++INTMAX_MAX = (__INT64_C(9223372036854775807))
++UINTMAX_MAX = (__UINT64_C(18446744073709551615))
++PTRDIFF_MIN = (-9223372036854775807L-1)
++PTRDIFF_MAX = (9223372036854775807L)
++PTRDIFF_MIN = (-2147483647-1)
++PTRDIFF_MAX = (2147483647)
++SIG_ATOMIC_MIN = (-2147483647-1)
++SIG_ATOMIC_MAX = (2147483647)
++WCHAR_MIN = __WCHAR_MIN
++WCHAR_MAX = __WCHAR_MAX
++def INT8_C(c): return c
++
++def INT16_C(c): return c
++
++def INT32_C(c): return c
++
++def INT64_C(c): return c ## L
++
++def INT64_C(c): return c ## LL
++
++def UINT8_C(c): return c ## U
++
++def UINT16_C(c): return c ## U
++
++def UINT32_C(c): return c ## U
++
++def UINT64_C(c): return c ## UL
++
++def UINT64_C(c): return c ## ULL
++
++def INTMAX_C(c): return c ## L
++
++def UINTMAX_C(c): return c ## UL
++
++def INTMAX_C(c): return c ## LL
++
++def UINTMAX_C(c): return c ## ULL
++
++
++# Included from bits/types.h
++_BITS_TYPES_H = 1
++__FD_SETSIZE = 1024
++
++# Included from bits/pthreadtypes.h
++_BITS_PTHREADTYPES_H = 1
++
++# Included from bits/sched.h
++SCHED_OTHER = 0
++SCHED_FIFO = 1
++SCHED_RR = 2
++CSIGNAL = 0x000000ff
++CLONE_VM = 0x00000100
++CLONE_FS = 0x00000200
++CLONE_FILES = 0x00000400
++CLONE_SIGHAND = 0x00000800
++CLONE_PID = 0x00001000
++CLONE_PTRACE = 0x00002000
++CLONE_VFORK = 0x00004000
++__defined_schedparam = 1
++def IN_CLASSA(a): return ((((in_addr_t)(a)) & (-2147483648)) == 0)
++
++IN_CLASSA_NET = (-16777216)
++IN_CLASSA_NSHIFT = 24
++IN_CLASSA_HOST = ((-1) & ~IN_CLASSA_NET)
++IN_CLASSA_MAX = 128
++def IN_CLASSB(a): return ((((in_addr_t)(a)) & (-1073741824)) == (-2147483648))
++
++IN_CLASSB_NET = (-65536)
++IN_CLASSB_NSHIFT = 16
++IN_CLASSB_HOST = ((-1) & ~IN_CLASSB_NET)
++IN_CLASSB_MAX = 65536
++def IN_CLASSC(a): return ((((in_addr_t)(a)) & (-536870912)) == (-1073741824))
++
++IN_CLASSC_NET = (-256)
++IN_CLASSC_NSHIFT = 8
++IN_CLASSC_HOST = ((-1) & ~IN_CLASSC_NET)
++def IN_CLASSD(a): return ((((in_addr_t)(a)) & (-268435456)) == (-536870912))
++
++def IN_MULTICAST(a): return IN_CLASSD(a)
++
++def IN_EXPERIMENTAL(a): return ((((in_addr_t)(a)) & (-536870912)) == (-536870912))
++
++def IN_BADCLASS(a): return ((((in_addr_t)(a)) & (-268435456)) == (-268435456))
++
++IN_LOOPBACKNET = 127
++INET_ADDRSTRLEN = 16
++INET6_ADDRSTRLEN = 46
++
++# Included from bits/socket.h
++
++# Included from limits.h
++_LIBC_LIMITS_H_ = 1
++MB_LEN_MAX = 16
++_LIMITS_H = 1
++CHAR_BIT = 8
++SCHAR_MIN = (-128)
++SCHAR_MAX = 127
++UCHAR_MAX = 255
++CHAR_MIN = 0
++CHAR_MAX = UCHAR_MAX
++CHAR_MIN = SCHAR_MIN
++CHAR_MAX = SCHAR_MAX
++SHRT_MIN = (-32768)
++SHRT_MAX = 32767
++USHRT_MAX = 65535
++INT_MAX = 2147483647
++LONG_MAX = 9223372036854775807L
++LONG_MAX = 2147483647L
++LONG_MIN = (-LONG_MAX - 1L)
++
++# Included from bits/posix1_lim.h
++_BITS_POSIX1_LIM_H = 1
++_POSIX_AIO_LISTIO_MAX = 2
++_POSIX_AIO_MAX = 1
++_POSIX_ARG_MAX = 4096
++_POSIX_CHILD_MAX = 6
++_POSIX_DELAYTIMER_MAX = 32
++_POSIX_LINK_MAX = 8
++_POSIX_MAX_CANON = 255
++_POSIX_MAX_INPUT = 255
++_POSIX_MQ_OPEN_MAX = 8
++_POSIX_MQ_PRIO_MAX = 32
++_POSIX_NGROUPS_MAX = 0
++_POSIX_OPEN_MAX = 16
++_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
++_POSIX_NAME_MAX = 14
++_POSIX_PATH_MAX = 256
++_POSIX_PIPE_BUF = 512
++_POSIX_RTSIG_MAX = 8
++_POSIX_SEM_NSEMS_MAX = 256
++_POSIX_SEM_VALUE_MAX = 32767
++_POSIX_SIGQUEUE_MAX = 32
++_POSIX_SSIZE_MAX = 32767
++_POSIX_STREAM_MAX = 8
++_POSIX_TZNAME_MAX = 6
++_POSIX_QLIMIT = 1
++_POSIX_HIWAT = _POSIX_PIPE_BUF
++_POSIX_UIO_MAXIOV = 16
++_POSIX_TTY_NAME_MAX = 9
++_POSIX_TIMER_MAX = 32
++_POSIX_LOGIN_NAME_MAX = 9
++_POSIX_CLOCKRES_MIN = 20000000
++
++# Included from bits/local_lim.h
++
++# Included from linux/limits.h
++NR_OPEN = 1024
++NGROUPS_MAX = 32
++ARG_MAX = 131072
++CHILD_MAX = 999
++OPEN_MAX = 256
++LINK_MAX = 127
++MAX_CANON = 255
++MAX_INPUT = 255
++NAME_MAX = 255
++PATH_MAX = 4096
++PIPE_BUF = 4096
++RTSIG_MAX = 32
++_POSIX_THREAD_KEYS_MAX = 128
++PTHREAD_KEYS_MAX = 1024
++_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
++PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++_POSIX_THREAD_THREADS_MAX = 64
++PTHREAD_THREADS_MAX = 1024
++AIO_PRIO_DELTA_MAX = 20
++PTHREAD_STACK_MIN = 16384
++TIMER_MAX = 256
++SSIZE_MAX = LONG_MAX
++NGROUPS_MAX = _POSIX_NGROUPS_MAX
++
++# Included from bits/posix2_lim.h
++_BITS_POSIX2_LIM_H = 1
++_POSIX2_BC_BASE_MAX = 99
++_POSIX2_BC_DIM_MAX = 2048
++_POSIX2_BC_SCALE_MAX = 99
++_POSIX2_BC_STRING_MAX = 1000
++_POSIX2_COLL_WEIGHTS_MAX = 2
++_POSIX2_EXPR_NEST_MAX = 32
++_POSIX2_LINE_MAX = 2048
++_POSIX2_RE_DUP_MAX = 255
++_POSIX2_CHARCLASS_NAME_MAX = 14
++BC_BASE_MAX = _POSIX2_BC_BASE_MAX
++BC_DIM_MAX = _POSIX2_BC_DIM_MAX
++BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
++BC_STRING_MAX = _POSIX2_BC_STRING_MAX
++COLL_WEIGHTS_MAX = 255
++EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
++LINE_MAX = _POSIX2_LINE_MAX
++CHARCLASS_NAME_MAX = 2048
++RE_DUP_MAX = (0x7fff)
++
++# Included from bits/xopen_lim.h
++_XOPEN_LIM_H = 1
++
++# Included from bits/stdio_lim.h
++L_tmpnam = 20
++TMP_MAX = 238328
++FILENAME_MAX = 4096
++L_ctermid = 9
++L_cuserid = 9
++FOPEN_MAX = 16
++IOV_MAX = 1024
++_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
++NL_ARGMAX = _POSIX_ARG_MAX
++NL_LANGMAX = _POSIX2_LINE_MAX
++NL_MSGMAX = INT_MAX
++NL_NMAX = INT_MAX
++NL_SETMAX = INT_MAX
++NL_TEXTMAX = INT_MAX
++NZERO = 20
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 16
++WORD_BIT = 32
++WORD_BIT = 64
++WORD_BIT = 32
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 32
++LONG_BIT = 64
++LONG_BIT = 64
++LONG_BIT = 32
++from TYPES import *
++PF_UNSPEC = 0
++PF_LOCAL = 1
++PF_UNIX = PF_LOCAL
++PF_FILE = PF_LOCAL
++PF_INET = 2
++PF_AX25 = 3
++PF_IPX = 4
++PF_APPLETALK = 5
++PF_NETROM = 6
++PF_BRIDGE = 7
++PF_ATMPVC = 8
++PF_X25 = 9
++PF_INET6 = 10
++PF_ROSE = 11
++PF_DECnet = 12
++PF_NETBEUI = 13
++PF_SECURITY = 14
++PF_KEY = 15
++PF_NETLINK = 16
++PF_ROUTE = PF_NETLINK
++PF_PACKET = 17
++PF_ASH = 18
++PF_ECONET = 19
++PF_ATMSVC = 20
++PF_SNA = 22
++PF_IRDA = 23
++PF_PPPOX = 24
++PF_WANPIPE = 25
++PF_BLUETOOTH = 31
++PF_MAX = 32
++AF_UNSPEC = PF_UNSPEC
++AF_LOCAL = PF_LOCAL
++AF_UNIX = PF_UNIX
++AF_FILE = PF_FILE
++AF_INET = PF_INET
++AF_AX25 = PF_AX25
++AF_IPX = PF_IPX
++AF_APPLETALK = PF_APPLETALK
++AF_NETROM = PF_NETROM
++AF_BRIDGE = PF_BRIDGE
++AF_ATMPVC = PF_ATMPVC
++AF_X25 = PF_X25
++AF_INET6 = PF_INET6
++AF_ROSE = PF_ROSE
++AF_DECnet = PF_DECnet
++AF_NETBEUI = PF_NETBEUI
++AF_SECURITY = PF_SECURITY
++AF_KEY = PF_KEY
++AF_NETLINK = PF_NETLINK
++AF_ROUTE = PF_ROUTE
++AF_PACKET = PF_PACKET
++AF_ASH = PF_ASH
++AF_ECONET = PF_ECONET
++AF_ATMSVC = PF_ATMSVC
++AF_SNA = PF_SNA
++AF_IRDA = PF_IRDA
++AF_PPPOX = PF_PPPOX
++AF_WANPIPE = PF_WANPIPE
++AF_BLUETOOTH = PF_BLUETOOTH
++AF_MAX = PF_MAX
++SOL_RAW = 255
++SOL_DECNET = 261
++SOL_X25 = 262
++SOL_PACKET = 263
++SOL_ATM = 264
++SOL_AAL = 265
++SOL_IRDA = 266
++SOMAXCONN = 128
++
++# Included from bits/sockaddr.h
++_BITS_SOCKADDR_H = 1
++def __SOCKADDR_COMMON(sa_prefix): return \
++
++_SS_SIZE = 128
++def CMSG_FIRSTHDR(mhdr): return \
++
++
++# Included from asm/socket.h
++
++# Included from asm/sockios.h
++FIOSETOWN = 0x8901
++SIOCSPGRP = 0x8902
++FIOGETOWN = 0x8903
++SIOCGPGRP = 0x8904
++SIOCATMARK = 0x8905
++SIOCGSTAMP = 0x8906
++SOL_SOCKET = 0xffff
++SO_DEBUG = 0x0001
++SO_REUSEADDR = 0x0004
++SO_TYPE = 0x1008
++SO_ERROR = 0x1007
++SO_DONTROUTE = 0x0010
++SO_BROADCAST = 0x0020
++SO_SNDBUF = 0x1001
++SO_RCVBUF = 0x1002
++SO_KEEPALIVE = 0x0008
++SO_OOBINLINE = 0x0100
++SO_NO_CHECK = 0x000b
++SO_PRIORITY = 0x000c
++SO_LINGER = 0x0080
++SO_BSDCOMPAT = 0x0400
++SO_PASSCRED = 0x0002
++SO_PEERCRED = 0x0040
++SO_RCVLOWAT = 0x0800
++SO_SNDLOWAT = 0x1000
++SO_RCVTIMEO = 0x2000
++SO_SNDTIMEO = 0x4000
++SO_SECURITY_AUTHENTICATION = 0x5001
++SO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002
++SO_SECURITY_ENCRYPTION_NETWORK = 0x5004
++SO_BINDTODEVICE = 0x000d
++SO_ATTACH_FILTER = 0x001a
++SO_DETACH_FILTER = 0x001b
++SO_PEERNAME = 0x001c
++SO_TIMESTAMP = 0x001d
++SCM_TIMESTAMP = SO_TIMESTAMP
++SO_ACCEPTCONN = 0x8000
++SOCK_STREAM = 1
++SOCK_DGRAM = 2
++SOCK_RAW = 3
++SOCK_RDM = 4
++SOCK_SEQPACKET = 5
++SOCK_PACKET = 10
++SOCK_MAX = (SOCK_PACKET+1)
++
++# Included from bits/in.h
++IP_TOS = 1
++IP_TTL = 2
++IP_HDRINCL = 3
++IP_OPTIONS = 4
++IP_ROUTER_ALERT = 5
++IP_RECVOPTS = 6
++IP_RETOPTS = 7
++IP_PKTINFO = 8
++IP_PKTOPTIONS = 9
++IP_PMTUDISC = 10
++IP_MTU_DISCOVER = 10
++IP_RECVERR = 11
++IP_RECVTTL = 12
++IP_RECVTOS = 13
++IP_MULTICAST_IF = 32
++IP_MULTICAST_TTL = 33
++IP_MULTICAST_LOOP = 34
++IP_ADD_MEMBERSHIP = 35
++IP_DROP_MEMBERSHIP = 36
++IP_RECVRETOPTS = IP_RETOPTS
++IP_PMTUDISC_DONT = 0
++IP_PMTUDISC_WANT = 1
++IP_PMTUDISC_DO = 2
++SOL_IP = 0
++IP_DEFAULT_MULTICAST_TTL = 1
++IP_DEFAULT_MULTICAST_LOOP = 1
++IP_MAX_MEMBERSHIPS = 20
++IPV6_ADDRFORM = 1
++IPV6_PKTINFO = 2
++IPV6_HOPOPTS = 3
++IPV6_DSTOPTS = 4
++IPV6_RTHDR = 5
++IPV6_PKTOPTIONS = 6
++IPV6_CHECKSUM = 7
++IPV6_HOPLIMIT = 8
++IPV6_NEXTHOP = 9
++IPV6_AUTHHDR = 10
++IPV6_UNICAST_HOPS = 16
++IPV6_MULTICAST_IF = 17
++IPV6_MULTICAST_HOPS = 18
++IPV6_MULTICAST_LOOP = 19
++IPV6_JOIN_GROUP = 20
++IPV6_LEAVE_GROUP = 21
++IPV6_ROUTER_ALERT = 22
++IPV6_MTU_DISCOVER = 23
++IPV6_MTU = 24
++IPV6_RECVERR = 25
++IPV6_RXHOPOPTS = IPV6_HOPOPTS
++IPV6_RXDSTOPTS = IPV6_DSTOPTS
++IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP
++IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP
++IPV6_PMTUDISC_DONT = 0
++IPV6_PMTUDISC_WANT = 1
++IPV6_PMTUDISC_DO = 2
++SOL_IPV6 = 41
++SOL_ICMPV6 = 58
++IPV6_RTHDR_LOOSE = 0
++IPV6_RTHDR_STRICT = 1
++IPV6_RTHDR_TYPE_0 = 0
++
++# Included from endian.h
++_ENDIAN_H = 1
++__LITTLE_ENDIAN = 1234
++__BIG_ENDIAN = 4321
++__PDP_ENDIAN = 3412
++
++# Included from bits/endian.h
++__BYTE_ORDER = __LITTLE_ENDIAN
++__FLOAT_WORD_ORDER = __BYTE_ORDER
++LITTLE_ENDIAN = __LITTLE_ENDIAN
++BIG_ENDIAN = __BIG_ENDIAN
++PDP_ENDIAN = __PDP_ENDIAN
++BYTE_ORDER = __BYTE_ORDER
++
++# Included from bits/byteswap.h
++_BITS_BYTESWAP_H = 1
++def __bswap_constant_16(x): return \
++
++def __bswap_16(x): return \
++
++def __bswap_16(x): return __bswap_constant_16 (x)
++
++def __bswap_constant_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return \
++
++def __bswap_32(x): return __bswap_constant_32 (x)
++
++def __bswap_constant_64(x): return \
++
++def __bswap_64(x): return \
++
++def ntohl(x): return (x)
++
++def ntohs(x): return (x)
++
++def htonl(x): return (x)
++
++def htons(x): return (x)
++
++def ntohl(x): return __bswap_32 (x)
++
++def ntohs(x): return __bswap_16 (x)
++
++def htonl(x): return __bswap_32 (x)
++
++def htons(x): return __bswap_16 (x)
++
++def IN6_IS_ADDR_UNSPECIFIED(a): return \
++
++def IN6_IS_ADDR_LOOPBACK(a): return \
++
++def IN6_IS_ADDR_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_V4MAPPED(a): return \
++
++def IN6_IS_ADDR_V4COMPAT(a): return \
++
++def IN6_IS_ADDR_MC_NODELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_SITELOCAL(a): return \
++
++def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
++
++def IN6_IS_ADDR_MC_GLOBAL(a): return
diff --git a/debian/patches/platform-lsbrelease b/debian/patches/platform-lsbrelease
new file mode 100644
index 0000000..d5f3204
--- /dev/null
+++ b/debian/patches/platform-lsbrelease
@@ -0,0 +1,55 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: Use /etc/lsb-release to identify the platform
+
+Author: Matthias Klose <doko@debian.org>
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/196526
+Bug-cpython: http://bugs.python.org/issue1322
+Bug-cpython: http://bugs.python.org/issue9514
+Origin: cpython Debian packaging
+Last-Update: 2011-12-19
+---
+ lib-python/2.7/platform.py | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/lib-python/2.7/platform.py b/lib-python/2.7/platform.py
+index 55f2fa8..e4dc14a 100755
+--- a/lib-python/2.7/platform.py
++++ b/lib-python/2.7/platform.py
+@@ -290,6 +290,10 @@ def _parse_release_file(firstline):
+ id = l[1]
+ return '', version, id
+
++_distributor_id_file_re = re.compile("(?:DISTRIB_ID\s*=)\s*(.*)", re.I)
++_release_file_re = re.compile("(?:DISTRIB_RELEASE\s*=)\s*(.*)", re.I)
++_codename_file_re = re.compile("(?:DISTRIB_CODENAME\s*=)\s*(.*)", re.I)
++
+ def linux_distribution(distname='', version='', id='',
+
+ supported_dists=_supported_dists,
+@@ -314,6 +318,25 @@ def linux_distribution(distname='', version='', id='',
+ args given as parameters.
+
+ """
++ # check for the Debian/Ubuntu /etc/lsb-release file first, needed so
++ # that the distribution doesn't get identified as Debian.
++ try:
++ etclsbrel = open("/etc/lsb-release", "rU")
++ for line in etclsbrel:
++ m = _distributor_id_file_re.search(line)
++ if m:
++ _u_distname = m.group(1).strip()
++ m = _release_file_re.search(line)
++ if m:
++ _u_version = m.group(1).strip()
++ m = _codename_file_re.search(line)
++ if m:
++ _u_id = m.group(1).strip()
++ if _u_distname and _u_version:
++ return (_u_distname, _u_version, _u_id)
++ except (EnvironmentError, UnboundLocalError):
++ pass
++
+ try:
+ etc = os.listdir('/etc')
+ except os.error:
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..a086409
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,24 @@
+version-info
+pep3147-core
+pep3147-stdlib
+pep3147-issue11254
+test_fsync-eatmydata
+test_termios
+fpic-archs
+skip-test_multiprocessing
+ctypes-arm
+distutils-link
+locale-module
+platform-lsbrelease
+xdg-gvfs-open
+plat-gnukfreebsd
+plat-linux2-differences
+ensurepip-wheels
+ensurepip-disabled
+multiarch
+distutils-install-layout
+langpack-gettext
+tkinter-import
+noise
+skip-hurd-deadlock
+arm64-gcc-bug
diff --git a/debian/patches/skip-hurd-deadlock b/debian/patches/skip-hurd-deadlock
new file mode 100644
index 0000000..47c2ac8
--- /dev/null
+++ b/debian/patches/skip-hurd-deadlock
@@ -0,0 +1,25 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sun, 26 Aug 2018 14:26:45 +0100
+Subject: Skip test that deadlocks on GNU Hurd
+
+Per Samuel Thibault:
+
+> That's probably because pypy uses pthread_mutexes (which per POSIX aren't
+> interrupted by signals) instead of semaphores, and I guess that's
+> because sem_open isn't supported on Hurd yet.
+---
+ pypy/module/thread/test/test_lock.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/pypy/module/thread/test/test_lock.py b/pypy/module/thread/test/test_lock.py
+index b56f08e..4fdd57c 100644
+--- a/pypy/module/thread/test/test_lock.py
++++ b/pypy/module/thread/test/test_lock.py
+@@ -241,6 +241,7 @@ class AppTestLockSignals(GenericTestThread):
+ def w_alarm_interrupt(self, sig, frame):
+ raise KeyboardInterrupt
+
++ @py.test.mark.skipif("sys.platform == 'gnu0'")
+ def test_lock_acquire_interruption(self):
+ import thread, signal, time
+ # Mimic receiving a SIGINT (KeyboardInterrupt) with SIGALRM while stuck
diff --git a/debian/patches/skip-test_multiprocessing b/debian/patches/skip-test_multiprocessing
new file mode 100644
index 0000000..da62a77
--- /dev/null
+++ b/debian/patches/skip-test_multiprocessing
@@ -0,0 +1,26 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:57 +0200
+Subject: Disable test_multiprocessing
+
+It leaves stray processes.
+
+Forwarded: not-needed
+Last-Updated: 2015-02-11
+---
+ lib-python/2.7/test/test_multiprocessing.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/lib-python/2.7/test/test_multiprocessing.py b/lib-python/2.7/test/test_multiprocessing.py
+index ba9caec..cf05b6f 100644
+--- a/lib-python/2.7/test/test_multiprocessing.py
++++ b/lib-python/2.7/test/test_multiprocessing.py
+@@ -2,6 +2,9 @@
+ # Unit tests for the multiprocessing package
+ #
+
++import unittest
++raise unittest.SkipTest('This test leaves stray processes on buildds. '
++ 'Disabled for now')
+ ## FIXME: remove when https://bugs.pypy.org/issue1644 is resolved
+ import sys
+ if sys.platform.startswith('freebsd'):
diff --git a/debian/patches/test_fsync-eatmydata b/debian/patches/test_fsync-eatmydata
new file mode 100644
index 0000000..f68c307
--- /dev/null
+++ b/debian/patches/test_fsync-eatmydata
@@ -0,0 +1,24 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:57 +0200
+Subject: Skip fsync tests when building with eatmydata
+
+Author: Stefano Rivera <stefanor@debian.org>
+Forwarded: not-needed
+Last-Update: 2012-02-06
+---
+ lib-python/2.7/test/test_os.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/lib-python/2.7/test/test_os.py b/lib-python/2.7/test/test_os.py
+index 6a06340..c4be901 100644
+--- a/lib-python/2.7/test/test_os.py
++++ b/lib-python/2.7/test/test_os.py
+@@ -654,6 +654,8 @@ class TestInvalidFD(unittest.TestCase):
+ except OSError as e:
+ self.assertEqual(e.errno, errno.EBADF)
+ else:
++ if f.__name__.endswith('sync'):
++ return # eatmydata won't raise an OSError
+ self.fail("%r didn't raise an OSError with a bad file descriptor"
+ % f)
+
diff --git a/debian/patches/test_termios b/debian/patches/test_termios
new file mode 100644
index 0000000..b0b1890
--- /dev/null
+++ b/debian/patches/test_termios
@@ -0,0 +1,26 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:57 +0200
+Subject: Support builds on older aufs
+
+Under aufs on squeeze, tcgetattr can return EINVAL instead of ENOTTY See
+https://lsbbugs.linuxfoundation.org/show_bug.cgi?id=2771
+
+Forwarded: not-needed
+Last-Update: 2013-02-23
+---
+ pypy/module/termios/test/test_termios.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pypy/module/termios/test/test_termios.py b/pypy/module/termios/test/test_termios.py
+index 4e01f53..20ffb1e 100644
+--- a/pypy/module/termios/test/test_termios.py
++++ b/pypy/module/termios/test/test_termios.py
+@@ -144,7 +144,7 @@ class AppTestTermios(object):
+ fd = os.open('.', 0)
+ try:
+ exc = raises(termios.error, termios.tcgetattr, fd)
+- assert exc.value.args[0] == errno.ENOTTY
++ assert exc.value.args[0] in (errno.ENOTTY, errno.EINVAL)
+ finally:
+ os.close(fd)
+
diff --git a/debian/patches/tkinter-import b/debian/patches/tkinter-import
new file mode 100644
index 0000000..6622cae
--- /dev/null
+++ b/debian/patches/tkinter-import
@@ -0,0 +1,29 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: suggest installation of pypy-tk package
+
+On failing _tkinter import.
+
+Author: Matthias Klose <doko@debian.org>
+Author: Stefano Rivera <stefanor@debian.org>
+Last-Update: 2013-11-15
+---
+ lib-python/2.7/lib-tk/Tkinter.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/lib-python/2.7/lib-tk/Tkinter.py b/lib-python/2.7/lib-tk/Tkinter.py
+index 64e9924..cc1de8b 100644
+--- a/lib-python/2.7/lib-tk/Tkinter.py
++++ b/lib-python/2.7/lib-tk/Tkinter.py
+@@ -36,7 +36,10 @@ import sys
+ if sys.platform == "win32":
+ # Attempt to configure Tcl/Tk without requiring PATH
+ import FixTk
+-import _tkinter # If this fails your Python may not be configured for Tk
++try:
++ import _tkinter # If this fails your Python may not be configured for Tk
++except ImportError, msg:
++ raise ImportError, str(msg) + ', please install the pypy-tk package'
+ tkinter = _tkinter # b/w compat for export
+ TclError = _tkinter.TclError
+ from types import *
diff --git a/debian/patches/version-info b/debian/patches/version-info
new file mode 100644
index 0000000..cb13493
--- /dev/null
+++ b/debian/patches/version-info
@@ -0,0 +1,49 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:57 +0200
+Subject: Get version details from the Debian source package
+
+Rather than VCS.
+
+Return the Debian package version in sys.version.
+Return null strings in sys._mercurial.
+
+Forwarded: not-needed
+Last-Update: 2013-02-23
+---
+ pypy/module/sys/version.py | 1 +
+ rpython/tool/version.py | 10 ++++++++++
+ 2 files changed, 11 insertions(+)
+
+diff --git a/pypy/module/sys/version.py b/pypy/module/sys/version.py
+index 317a0c1..6fe5862 100644
+--- a/pypy/module/sys/version.py
++++ b/pypy/module/sys/version.py
+@@ -90,6 +90,7 @@ def get_subversion_info(space):
+ return space.wrap(('PyPy', '', ''))
+
+ def get_repo_info(space):
++ return space.wrap(('PyPy', '', ''))
+ info = get_repo_version_info(root=pypyroot)
+ if info:
+ repo_tag, repo_version = info
+diff --git a/rpython/tool/version.py b/rpython/tool/version.py
+index a776f7e..245ab9d 100644
+--- a/rpython/tool/version.py
++++ b/rpython/tool/version.py
+@@ -17,6 +17,16 @@ def maywarn(err, repo_type='Mercurial'):
+ def get_repo_version_info(hgexe=None, root=rpythonroot):
+ '''Obtain version information by invoking the 'hg' or 'git' commands.'''
+
++ # Debian: built from a source tarball
++ p = Popen(('dpkg-parsechangelog',), stdout=PIPE, cwd=rpythonroot)
++ if p.wait() != 0:
++ maywarn(p.stderr.read(), 'dpkg-parsechangelog')
++ return default_retval
++ for line in p.stdout.read().split('\n'):
++ if line.split(':', 1)[0].strip() == 'Version':
++ version = line.split(':', 1)[1].strip()
++ return '', version
++
+ # Try to see if we can get info from Git if hgexe is not specified.
+ if not hgexe:
+ if os.path.isdir(os.path.join(root, '.git')):
diff --git a/debian/patches/xdg-gvfs-open b/debian/patches/xdg-gvfs-open
new file mode 100644
index 0000000..a2e9dc8
--- /dev/null
+++ b/debian/patches/xdg-gvfs-open
@@ -0,0 +1,31 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sat, 7 Oct 2017 09:38:58 +0200
+Subject: Use xdg-open/gvfs-open in webbrowser
+
+Bug-cpython: http://bugs.python.org/issue14493
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/971311
+Origin: cpython, http://hg.python.org/cpython/rev/70c58903b52e
+Author: Michael Vogt <michael.vogt@ubuntu.com>
+---
+ lib-python/2.7/webbrowser.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/lib-python/2.7/webbrowser.py b/lib-python/2.7/webbrowser.py
+index 2389179..645b3e1 100755
+--- a/lib-python/2.7/webbrowser.py
++++ b/lib-python/2.7/webbrowser.py
+@@ -453,6 +453,14 @@ class Grail(BaseBrowser):
+
+ def register_X_browsers():
+
++ # use xdg-open if around
++ if _iscommand("xdg-open"):
++ register("xdg-open", None, BackgroundBrowser("xdg-open"))
++
++ # The default GNOME3 browser
++ if "GNOME_DESKTOP_SESSION_ID" in os.environ and _iscommand("gvfs-open"):
++ register("gvfs-open", None, BackgroundBrowser("gvfs-open"))
++
+ # use xdg-open if around
+ if _iscommand("xdg-open"):
+ register("xdg-open", None, BackgroundBrowser("xdg-open"))