mbox

python: Update to 2.7.12.

Message ID 1476272472-21263-1-git-send-email-stefan.schantl@ipfire.org
State Accepted
Commit 4034c523117d03861162c0b66cdc5f07c66b4b27
Headers

Message

Stefan Schantl Oct. 12, 2016, 10:41 p.m. UTC
  This is a minor update to the lastest available version of
the python 2.7 series.

* Drop support for SELinux.

Fixes #11226.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
---
 ...0134-fix-COUNT_ALLOCS-failure-in-test_sys.patch |  14 +-
 ...6-skip-tests-of-seeking-stdin-in-rpmbuild.patch |  25 +--
 python/patches/00157-uid-gid-overflows.patch       |  76 +++----
 python/patches/00170-gc-assertions.patch           |   4 +-
 ...00173-workaround-ENOPROTOOPT-in-bind_port.patch |   7 +-
 ...-4238-hostname-check-bypass-in-SSL-module.patch | 247 ---------------------
 python/patches/00186-memory-leak-marshalc.patch    |  57 -----
 python/patches/05000-autotool-intermediates.patch  |  13 +-
 python/patches/python-2.5.1-plural-fix.patch       |   2 +-
 python/patches/python-2.6-rpath.patch              |   2 +-
 python/patches/python-2.7rc1-binutils-no-dep.patch |  14 --
 python/python-2.7.12-lib64.patch                   | 184 +++++++++++++++
 python/python-2.7.3-lib64.patch                    | 196 ----------------
 python/python.nm                                   |   7 +-
 14 files changed, 250 insertions(+), 598 deletions(-)
 delete mode 100644 python/patches/00185-CVE-2013-4238-hostname-check-bypass-in-SSL-module.patch
 delete mode 100644 python/patches/00186-memory-leak-marshalc.patch
 delete mode 100644 python/patches/python-2.7rc1-binutils-no-dep.patch
 create mode 100644 python/python-2.7.12-lib64.patch
 delete mode 100644 python/python-2.7.3-lib64.patch
  

Comments

Michael Tremer Oct. 13, 2016, 4:24 a.m. UTC | #1
Hi,

this patch isn't showing up in Patchwork :(

-Michael

On Wed, 2016-10-12 at 13:41 +0200, Stefan Schantl wrote:
> This is a minor update to the lastest available version of
> the python 2.7 series.
> 
> * Drop support for SELinux.
> 
> Fixes #11226.
> 
> Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
> ---
>  ...0134-fix-COUNT_ALLOCS-failure-in-test_sys.patch |  14 +-
>  ...6-skip-tests-of-seeking-stdin-in-rpmbuild.patch |  25 +--
>  python/patches/00157-uid-gid-overflows.patch       |  76 +++----
>  python/patches/00170-gc-assertions.patch           |   4 +-
>  ...00173-workaround-ENOPROTOOPT-in-bind_port.patch |   7 +-
>  ...-4238-hostname-check-bypass-in-SSL-module.patch | 247 --------------------
> -
>  python/patches/00186-memory-leak-marshalc.patch    |  57 -----
>  python/patches/05000-autotool-intermediates.patch  |  13 +-
>  python/patches/python-2.5.1-plural-fix.patch       |   2 +-
>  python/patches/python-2.6-rpath.patch              |   2 +-
>  python/patches/python-2.7rc1-binutils-no-dep.patch |  14 --
>  python/python-2.7.12-lib64.patch                   | 184 +++++++++++++++
>  python/python-2.7.3-lib64.patch                    | 196 ----------------
>  python/python.nm                                   |   7 +-
>  14 files changed, 250 insertions(+), 598 deletions(-)
>  delete mode 100644 python/patches/00185-CVE-2013-4238-hostname-check-bypass-
> in-SSL-module.patch
>  delete mode 100644 python/patches/00186-memory-leak-marshalc.patch
>  delete mode 100644 python/patches/python-2.7rc1-binutils-no-dep.patch
>  create mode 100644 python/python-2.7.12-lib64.patch
>  delete mode 100644 python/python-2.7.3-lib64.patch
> 
> diff --git a/python/patches/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
> b/python/patches/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
> index 38381ef..71e7f68 100644
> --- a/python/patches/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
> +++ b/python/patches/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
> @@ -1,9 +1,11 @@
> ---- Python-2.7.2/Lib/test/test_sys.py.mark-tests-that-fail-in-rpmbuild	
> 2011-09-08 18:02:31.627362039 -0400
> -+++ Python-2.7.2/Lib/test/test_sys.py	2011-09-08 18:15:29.450308851
> -0400
> -@@ -734,6 +734,11 @@ class SizeofTest(unittest.TestCase):
> -         # (PyTypeObject + PyNumberMethods +  PyMappingMethods +
> -         #  PySequenceMethods + PyBufferProcs)
> -         s = vsize('P2P15Pl4PP9PP11PI') + struct.calcsize('41P 10P 3P 6P')
> +diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
> +index 0dd4258..d9b3267 100644
> +--- a/Lib/test/test_sys.py
> ++++ b/Lib/test/test_sys.py
> +@@ -769,6 +769,11 @@ class SizeofTest(unittest.TestCase):
> +                   '10P'                 # PySequenceMethods
> +                   '6P'                  # PyBufferProcs
> +                   '2P')
>  +
>  +        # COUNT_ALLOCS adds further fields to the end of a PyTypeObject:
>  +        if hasattr(sys, 'getcounts'):
> diff --git a/python/patches/00136-skip-tests-of-seeking-stdin-in-
> rpmbuild.patch b/python/patches/00136-skip-tests-of-seeking-stdin-in-
> rpmbuild.patch
> index 845fb2a..4d7626f 100644
> --- a/python/patches/00136-skip-tests-of-seeking-stdin-in-rpmbuild.patch
> +++ b/python/patches/00136-skip-tests-of-seeking-stdin-in-rpmbuild.patch
> @@ -1,22 +1,11 @@
> -diff -up Python-2.7.2/Lib/test/test_file2k.py.skip-tests-of-seeking-stdin-in-
> rpmbuild Python-2.7.2/Lib/test/test_file2k.py
> ---- Python-2.7.2/Lib/test/test_file2k.py.skip-tests-of-seeking-stdin-in-
> rpmbuild	2011-09-08 17:23:50.922520729 -0400
> -+++ Python-2.7.2/Lib/test/test_file2k.py	2011-09-08 17:24:41.368517277
> -0400
> -@@ -213,6 +213,7 @@ class OtherFileTests(unittest.TestCase):
> +diff -up Python-2.7.6/Lib/test/test_file2k.py.stdin-test Python-
> 2.7.6/Lib/test/test_file2k.py
> +--- Python-2.7.6/Lib/test/test_file2k.py.stdin-test	2013-11-10
> 08:36:40.000000000 +0100
> ++++ Python-2.7.6/Lib/test/test_file2k.py	2014-01-29 14:28:01.029488055
> +0100
> +@@ -223,6 +223,7 @@ class OtherFileTests(unittest.TestCase):
>               else:
>                   f.close()
>   
>  +    @unittest._skipInRpmBuild('seems not to raise the exception when run in
> Koji')
> -     def testStdin(self):
> -         # This causes the interpreter to exit on OSF1 v5.1.
> -         if sys.platform != 'osf1V5':
> -diff -up Python-2.7.2/Lib/test/test_file.py.skip-tests-of-seeking-stdin-in-
> rpmbuild Python-2.7.2/Lib/test/test_file.py
> ---- Python-2.7.2/Lib/test/test_file.py.skip-tests-of-seeking-stdin-in-
> rpmbuild	2011-09-08 17:20:31.146534389 -0400
> -+++ Python-2.7.2/Lib/test/test_file.py	2011-09-08 17:24:45.016517030
> -0400
> -@@ -154,6 +154,7 @@ class OtherFileTests(unittest.TestCase):
> -                 f.close()
> -                 self.fail('%r is an invalid file mode' % mode)
> - 
> -+    @unittest._skipInRpmBuild('seems not to raise the exception when run in
> Koji')
> -     def testStdin(self):
> -         # This causes the interpreter to exit on OSF1 v5.1.
> -         if sys.platform != 'osf1V5':
> +     def testStdinSeek(self):
> +         if sys.platform == 'osf1V5':
> +             # This causes the interpreter to exit on OSF1 v5.1.
> diff --git a/python/patches/00157-uid-gid-overflows.patch
> b/python/patches/00157-uid-gid-overflows.patch
> index 13546bb..a31c98a 100644
> --- a/python/patches/00157-uid-gid-overflows.patch
> +++ b/python/patches/00157-uid-gid-overflows.patch
> @@ -2,48 +2,48 @@ diff -up Python-2.7.3/Lib/test/test_os.py.uid-gid-overflows
> Python-2.7.3/Lib/tes
>  --- Python-2.7.3/Lib/test/test_os.py.uid-gid-overflows	2012-04-09
> 19:07:32.000000000 -0400
>  +++ Python-2.7.3/Lib/test/test_os.py	2012-06-26 14:51:36.000817929
> -0400
>  @@ -677,30 +677,36 @@ if sys.platform != 'win32':
> -             def test_setuid(self):
> -                 if os.getuid() != 0:
> -                     self.assertRaises(os.error, os.setuid, 0)
> -+                self.assertRaises(TypeError, os.setuid, 'not an int')
> -                 self.assertRaises(OverflowError, os.setuid, 1<<32)
> +     def test_setuid(self):
> +         if os.getuid() != 0:
> +             self.assertRaises(os.error, os.setuid, 0)
> ++        self.assertRaises(TypeError, os.setuid, 'not an int')
> +         self.assertRaises(OverflowError, os.setuid, 1<<32)
>   
> -         if hasattr(os, 'setgid'):
> -             def test_setgid(self):
> -                 if os.getuid() != 0:
> -                     self.assertRaises(os.error, os.setgid, 0)
> -+                self.assertRaises(TypeError, os.setgid, 'not an int')
> -                 self.assertRaises(OverflowError, os.setgid, 1<<32)
> +     @unittest.skipUnless(hasattr(os, 'setgid'), 'test needs os.setgid()')
> +     def test_setgid(self):
> +         if os.getuid() != 0:
> +             self.assertRaises(os.error, os.setgid, 0)
> ++        self.assertRaises(TypeError, os.setgid, 'not an int')
> +         self.assertRaises(OverflowError, os.setgid, 1<<32)
>   
> -         if hasattr(os, 'seteuid'):
> -             def test_seteuid(self):
> -                 if os.getuid() != 0:
> -                     self.assertRaises(os.error, os.seteuid, 0)
> -+                self.assertRaises(TypeError, os.seteuid, 'not an int')
> -                 self.assertRaises(OverflowError, os.seteuid, 1<<32)
> +     @unittest.skipUnless(hasattr(os, 'seteuid'), 'test needs os.seteuid()')
> +     def test_seteuid(self):
> +         if os.getuid() != 0:
> +             self.assertRaises(os.error, os.seteuid, 0)
> ++        self.assertRaises(TypeError, os.seteuid, 'not an int')
> +         self.assertRaises(OverflowError, os.seteuid, 1<<32)
>   
> -         if hasattr(os, 'setegid'):
> -             def test_setegid(self):
> -                 if os.getuid() != 0:
> -                     self.assertRaises(os.error, os.setegid, 0)
> -+                self.assertRaises(TypeError, os.setegid, 'not an int')
> -                 self.assertRaises(OverflowError, os.setegid, 1<<32)
> +     @unittest.skipUnless(hasattr(os, 'setegid'), 'test needs os.setegid()')
> +     def test_setegid(self):
> +         if os.getuid() != 0:
> +             self.assertRaises(os.error, os.setegid, 0)
> ++        self.assertRaises(TypeError, os.setegid, 'not an int')
> +         self.assertRaises(OverflowError, os.setegid, 1<<32)
>   
> -         if hasattr(os, 'setreuid'):
> -             def test_setreuid(self):
> -                 if os.getuid() != 0:
> -                     self.assertRaises(os.error, os.setreuid, 0, 0)
> -+                self.assertRaises(TypeError, os.setreuid, 'not an int', 0)
> -+                self.assertRaises(TypeError, os.setreuid, 0, 'not an int')
> -                 self.assertRaises(OverflowError, os.setreuid, 1<<32, 0)
> -                 self.assertRaises(OverflowError, os.setreuid, 0, 1<<32)
> +     @unittest.skipUnless(hasattr(os, 'setreuid'), 'test needs
> os.setreuid()')
> +     def test_setreuid(self):
> +         if os.getuid() != 0:
> +             self.assertRaises(os.error, os.setreuid, 0, 0)
> ++        self.assertRaises(TypeError, os.setreuid, 'not an int', 0)
> ++        self.assertRaises(TypeError, os.setreuid, 0, 'not an int')
> +         self.assertRaises(OverflowError, os.setreuid, 1<<32, 0)
> +         self.assertRaises(OverflowError, os.setreuid, 0, 1<<32)
>   
>  @@ -715,6 +721,8 @@ if sys.platform != 'win32':
> -             def test_setregid(self):
> -                 if os.getuid() != 0:
> -                     self.assertRaises(os.error, os.setregid, 0, 0)
> -+                self.assertRaises(TypeError, os.setregid, 'not an int', 0)
> -+                self.assertRaises(TypeError, os.setregid, 0, 'not an int')
> -                 self.assertRaises(OverflowError, os.setregid, 1<<32, 0)
> -                 self.assertRaises(OverflowError, os.setregid, 0, 1<<32)
> +     def test_setregid(self):
> +         if os.getuid() != 0:
> +             self.assertRaises(os.error, os.setregid, 0, 0)
> ++        self.assertRaises(TypeError, os.setregid, 'not an int', 0)
> ++        self.assertRaises(TypeError, os.setregid, 0, 'not an int')
> +         self.assertRaises(OverflowError, os.setregid, 1<<32, 0)
> +         self.assertRaises(OverflowError, os.setregid, 0, 1<<32)
>   
> diff --git a/python/patches/00170-gc-assertions.patch b/python/patches/00170-
> gc-assertions.patch
> index 3fb37ff..f3a0838 100644
> --- a/python/patches/00170-gc-assertions.patch
> +++ b/python/patches/00170-gc-assertions.patch
> @@ -3,8 +3,8 @@ diff -up Python-2.7.3/Lib/test/test_gc.py.gc-assertions
> Python-2.7.3/Lib/test/te
>  +++ Python-2.7.3/Lib/test/test_gc.py	2013-02-20 16:39:52.720489297
> -0500
>  @@ -1,6 +1,7 @@
>   import unittest
> --from test.test_support import verbose, run_unittest
> -+from test.test_support import verbose, run_unittest, import_module
> +-from test.test_support import verbose, run_unittest, start_threads
> ++from test.test_support import verbose, run_unittest, start_threads,
> import_module
>   import sys
>  +import sysconfig
>   import time
> diff --git a/python/patches/00173-workaround-ENOPROTOOPT-in-bind_port.patch
> b/python/patches/00173-workaround-ENOPROTOOPT-in-bind_port.patch
> index eb34610..3e83d67 100644
> --- a/python/patches/00173-workaround-ENOPROTOOPT-in-bind_port.patch
> +++ b/python/patches/00173-workaround-ENOPROTOOPT-in-bind_port.patch
> @@ -8,6 +8,7 @@ diff -up Python-2.7.3/Lib/test/test_support.py.rhbz913732
> Python-2.7.3/Lib/test/
>  -        if hasattr(socket, 'SO_REUSEPORT'):
>  +        if hasattr(socket, 'SO_REUSEPORT') \
>  +                and 'WITHIN_PYTHON_RPM_BUILD' not in os.environ: #
> rhbz#913732
> -             if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) == 1:
> -                 raise TestFailed("tests should never set the SO_REUSEPORT
> "   \
> -                                  "socket option on TCP/IP sockets!")
> +             try:
> +                 if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT)
> == 1:
> +                     raise TestFailed("tests should never set the
> SO_REUSEPORT "   \
> +                                      "socket option on TCP/IP sockets!")
> diff --git a/python/patches/00185-CVE-2013-4238-hostname-check-bypass-in-SSL-
> module.patch b/python/patches/00185-CVE-2013-4238-hostname-check-bypass-in-
> SSL-module.patch
> deleted file mode 100644
> index e215589..0000000
> --- a/python/patches/00185-CVE-2013-4238-hostname-check-bypass-in-SSL-
> module.patch
> +++ /dev/null
> @@ -1,247 +0,0 @@
> -diff -r 9ddc63c039ba Lib/test/nullbytecert.pem
> ---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> -+++ b/Lib/test/nullbytecert.pem	Sun Aug 11 18:13:17 2013 +0200
> -@@ -0,0 +1,90 @@
> -+Certificate:
> -+    Data:
> -+        Version: 3 (0x2)
> -+        Serial Number: 0 (0x0)
> -+    Signature Algorithm: sha1WithRSAEncryption
> -+        Issuer: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation,
> OU=Python Core Development, CN=null.python.org\x00example.org/emailAddress=pyt
> hon-dev@python.org
> -+        Validity
> -+            Not Before: Aug  7 13:11:52 2013 GMT
> -+            Not After : Aug  7 13:12:52 2013 GMT
> -+        Subject: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation,
> OU=Python Core Development, CN=null.python.org\x00example.org/emailAddress=pyt
> hon-dev@python.org
> -+        Subject Public Key Info:
> -+            Public Key Algorithm: rsaEncryption
> -+                Public-Key: (2048 bit)
> -+                Modulus:
> -+                    00:b5:ea:ed:c9:fb:46:7d:6f:3b:76:80:dd:3a:f3:
> -+                    03:94:0b:a7:a6:db:ec:1d:df:ff:23:74:08:9d:97:
> -+                    16:3f:a3:a4:7b:3e:1b:0e:96:59:25:03:a7:26:e2:
> -+                    88:a9:cf:79:cd:f7:04:56:b0:ab:79:32:6e:59:c1:
> -+                    32:30:54:eb:58:a8:cb:91:f0:42:a5:64:27:cb:d4:
> -+                    56:31:88:52:ad:cf:bd:7f:f0:06:64:1f:cc:27:b8:
> -+                    a3:8b:8c:f3:d8:29:1f:25:0b:f5:46:06:1b:ca:02:
> -+                    45:ad:7b:76:0a:9c:bf:bb:b9:ae:0d:16:ab:60:75:
> -+                    ae:06:3e:9c:7c:31:dc:92:2f:29:1a:e0:4b:0c:91:
> -+                    90:6c:e9:37:c5:90:d7:2a:d7:97:15:a3:80:8f:5d:
> -+                    7b:49:8f:54:30:d4:97:2c:1c:5b:37:b5:ab:69:30:
> -+                    68:43:d3:33:78:4b:02:60:f5:3c:44:80:a1:8f:e7:
> -+                    f0:0f:d1:5e:87:9e:46:cf:62:fc:f9:bf:0c:65:12:
> -+                    f1:93:c8:35:79:3f:c8:ec:ec:47:f5:ef:be:44:d5:
> -+                    ae:82:1e:2d:9a:9f:98:5a:67:65:e1:74:70:7c:cb:
> -+                    d3:c2:ce:0e:45:49:27:dc:e3:2d:d4:fb:48:0e:2f:
> -+                    9e:77:b8:14:46:c0:c4:36:ca:02:ae:6a:91:8c:da:
> -+                    2f:85
> -+                Exponent: 65537 (0x10001)
> -+        X509v3 extensions:
> -+            X509v3 Basic Constraints: critical
> -+                CA:FALSE
> -+            X509v3 Subject Key Identifier:
> -+                88:5A:55:C0:52:FF:61:CD:52:A3:35:0F:EA:5A:9C:24:38:22:F7:5C
> -+            X509v3 Key Usage:
> -+                Digital Signature, Non Repudiation, Key Encipherment
> -+            X509v3 Subject Alternative Name:
> -+                ************************************************************
> *
> -+                WARNING: The values for DNS, email and URI are WRONG.
> OpenSSL
> -+                         doesn't print the text after a NULL byte.
> -+                ************************************************************
> *
> -+                DNS:altnull.python.org, email:null@python.org, URI:http://nu
> ll.python.org, IP Address:192.0.2.1, IP Address:2001:DB8:0:0:0:0:0:1
> -+    Signature Algorithm: sha1WithRSAEncryption
> -+         ac:4f:45:ef:7d:49:a8:21:70:8e:88:59:3e:d4:36:42:70:f5:
> -+         a3:bd:8b:d7:a8:d0:58:f6:31:4a:b1:a4:a6:dd:6f:d9:e8:44:
> -+         3c:b6:0a:71:d6:7f:b1:08:61:9d:60:ce:75:cf:77:0c:d2:37:
> -+         86:02:8d:5e:5d:f9:0f:71:b4:16:a8:c1:3d:23:1c:f1:11:b3:
> -+         56:6e:ca:d0:8d:34:94:e6:87:2a:99:f2:ae:ae:cc:c2:e8:86:
> -+         de:08:a8:7f:c5:05:fa:6f:81:a7:82:e6:d0:53:9d:34:f4:ac:
> -+         3e:40:fe:89:57:7a:29:a4:91:7e:0b:c6:51:31:e5:10:2f:a4:
> -+         60:76:cd:95:51:1a:be:8b:a1:b0:fd:ad:52:bd:d7:1b:87:60:
> -+         d2:31:c7:17:c4:18:4f:2d:08:25:a3:a7:4f:b7:92:ca:e2:f5:
> -+         25:f1:54:75:81:9d:b3:3d:61:a2:f7:da:ed:e1:c6:6f:2c:60:
> -+         1f:d8:6f:c5:92:05:ab:c9:09:62:49:a9:14:ad:55:11:cc:d6:
> -+         4a:19:94:99:97:37:1d:81:5f:8b:cf:a3:a8:96:44:51:08:3d:
> -+         0b:05:65:12:eb:b6:70:80:88:48:72:4f:c6:c2:da:cf:cd:8e:
> -+         5b:ba:97:2f:60:b4:96:56:49:5e:3a:43:76:63:04:be:2a:f6:
> -+         c1:ca:a9:94
> -+-----BEGIN CERTIFICATE-----
> -+MIIE2DCCA8CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBxTELMAkGA1UEBhMCVVMx
> -+DzANBgNVBAgMBk9yZWdvbjESMBAGA1UEBwwJQmVhdmVydG9uMSMwIQYDVQQKDBpQ
> -+eXRob24gU29mdHdhcmUgRm91bmRhdGlvbjEgMB4GA1UECwwXUHl0aG9uIENvcmUg
> -+RGV2ZWxvcG1lbnQxJDAiBgNVBAMMG251bGwucHl0aG9uLm9yZwBleGFtcGxlLm9y
> -+ZzEkMCIGCSqGSIb3DQEJARYVcHl0aG9uLWRldkBweXRob24ub3JnMB4XDTEzMDgw
> -+NzEzMTE1MloXDTEzMDgwNzEzMTI1MlowgcUxCzAJBgNVBAYTAlVTMQ8wDQYDVQQI
> -+DAZPcmVnb24xEjAQBgNVBAcMCUJlYXZlcnRvbjEjMCEGA1UECgwaUHl0aG9uIFNv
> -+ZnR3YXJlIEZvdW5kYXRpb24xIDAeBgNVBAsMF1B5dGhvbiBDb3JlIERldmVsb3Bt
> -+ZW50MSQwIgYDVQQDDBtudWxsLnB5dGhvbi5vcmcAZXhhbXBsZS5vcmcxJDAiBgkq
> -+hkiG9w0BCQEWFXB5dGhvbi1kZXZAcHl0aG9uLm9yZzCCASIwDQYJKoZIhvcNAQEB
> -+BQADggEPADCCAQoCggEBALXq7cn7Rn1vO3aA3TrzA5QLp6bb7B3f/yN0CJ2XFj+j
> -+pHs+Gw6WWSUDpybiiKnPec33BFawq3kyblnBMjBU61ioy5HwQqVkJ8vUVjGIUq3P
> -+vX/wBmQfzCe4o4uM89gpHyUL9UYGG8oCRa17dgqcv7u5rg0Wq2B1rgY+nHwx3JIv
> -+KRrgSwyRkGzpN8WQ1yrXlxWjgI9de0mPVDDUlywcWze1q2kwaEPTM3hLAmD1PESA
> -+oY/n8A/RXoeeRs9i/Pm/DGUS8ZPINXk/yOzsR/XvvkTVroIeLZqfmFpnZeF0cHzL
> -+08LODkVJJ9zjLdT7SA4vnne4FEbAxDbKAq5qkYzaL4UCAwEAAaOB0DCBzTAMBgNV
> -+HRMBAf8EAjAAMB0GA1UdDgQWBBSIWlXAUv9hzVKjNQ/qWpwkOCL3XDALBgNVHQ8E
> -+BAMCBeAwgZAGA1UdEQSBiDCBhYIeYWx0bnVsbC5weXRob24ub3JnAGV4YW1wbGUu
> -+Y29tgSBudWxsQHB5dGhvbi5vcmcAdXNlckBleGFtcGxlLm9yZ4YpaHR0cDovL251
> -+bGwucHl0aG9uLm9yZwBodHRwOi8vZXhhbXBsZS5vcmeHBMAAAgGHECABDbgAAAAA
> -+AAAAAAAAAAEwDQYJKoZIhvcNAQEFBQADggEBAKxPRe99SaghcI6IWT7UNkJw9aO9
> -+i9eo0Fj2MUqxpKbdb9noRDy2CnHWf7EIYZ1gznXPdwzSN4YCjV5d+Q9xtBaowT0j
> -+HPERs1ZuytCNNJTmhyqZ8q6uzMLoht4IqH/FBfpvgaeC5tBTnTT0rD5A/olXeimk
> -+kX4LxlEx5RAvpGB2zZVRGr6LobD9rVK91xuHYNIxxxfEGE8tCCWjp0+3ksri9SXx
> -+VHWBnbM9YaL32u3hxm8sYB/Yb8WSBavJCWJJqRStVRHM1koZlJmXNx2BX4vPo6iW
> -+RFEIPQsFZRLrtnCAiEhyT8bC2s/Njlu6ly9gtJZWSV46Q3ZjBL4q9sHKqZQ=
> -+-----END CERTIFICATE-----
> -diff -r 9ddc63c039ba Lib/test/test_ssl.py
> ---- a/Lib/test/test_ssl.py	Sun Aug 11 13:04:50 2013 +0300
> -+++ b/Lib/test/test_ssl.py	Sun Aug 11 18:13:17 2013 +0200
> -@@ -25,6 +25,7 @@
> - HOST = test_support.HOST
> - CERTFILE = None
> - SVN_PYTHON_ORG_ROOT_CERT = None
> -+NULLBYTECERT = None
> - 
> - def handle_error(prefix):
> -     exc_format = ' '.join(traceback.format_exception(*sys.exc_info()))
> -@@ -123,6 +124,27 @@
> -                           ('DNS', 'projects.forum.nokia.com'))
> -                         )
> - 
> -+    def test_parse_cert_CVE_2013_4073(self):
> -+        p = ssl._ssl._test_decode_cert(NULLBYTECERT)
> -+        if test_support.verbose:
> -+            sys.stdout.write("\n" + pprint.pformat(p) + "\n")
> -+        subject = ((('countryName', 'US'),),
> -+                   (('stateOrProvinceName', 'Oregon'),),
> -+                   (('localityName', 'Beaverton'),),
> -+                   (('organizationName', 'Python Software Foundation'),),
> -+                   (('organizationalUnitName', 'Python Core Development'),),
> -+                   (('commonName', 'null.python.org\x00example.org'),),
> -+                   (('emailAddress', 'python-dev@python.org'),))
> -+        self.assertEqual(p['subject'], subject)
> -+        self.assertEqual(p['issuer'], subject)
> -+        self.assertEqual(p['subjectAltName'],
> -+                         (('DNS', 'altnull.python.org\x00example.com'),
> -+                         ('email', 'null@python.org\x00user@example.org'),
> -+                         ('URI', 'http://null.python.org\x00http://example.o
> rg'),
> -+                         ('IP Address', '192.0.2.1'),
> -+                         ('IP Address', '2001:DB8:0:0:0:0:0:1\n'))
> -+                        )
> -+
> -     def test_DER_to_PEM(self):
> -         with open(SVN_PYTHON_ORG_ROOT_CERT, 'r') as f:
> -             pem = f.read()
> -@@ -1360,7 +1382,7 @@
> - 
> - 
> - def test_main(verbose=False):
> --    global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT, NOKIACERT
> -+    global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT, NOKIACERT, NULLBYTECERT
> -     CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir,
> -                             "keycert.pem")
> -     SVN_PYTHON_ORG_ROOT_CERT = os.path.join(
> -@@ -1368,10 +1390,13 @@
> -         "https_svn_python_org_root.pem")
> -     NOKIACERT = os.path.join(os.path.dirname(__file__) or os.curdir,
> -                              "nokia.pem")
> -+    NULLBYTECERT = os.path.join(os.path.dirname(__file__) or os.curdir,
> -+                                "nullbytecert.pem")
> - 
> -     if (not os.path.exists(CERTFILE) or
> -         not os.path.exists(SVN_PYTHON_ORG_ROOT_CERT) or
> --        not os.path.exists(NOKIACERT)):
> -+        not os.path.exists(NOKIACERT) or
> -+        not os.path.exists(NULLBYTECERT)):
> -         raise test_support.TestFailed("Can't read certificate files!")
> - 
> -     tests = [BasicTests, BasicSocketTests]
> -diff -r 9ddc63c039ba Modules/_ssl.c
> ---- a/Modules/_ssl.c	Sun Aug 11 13:04:50 2013 +0300
> -+++ b/Modules/_ssl.c	Sun Aug 11 18:13:17 2013 +0200
> -@@ -741,8 +741,13 @@
> - 
> -             /* get a rendering of each name in the set of names */
> - 
> -+            int gntype;
> -+            ASN1_STRING *as = NULL;
> -+
> -             name = sk_GENERAL_NAME_value(names, j);
> --            if (name->type == GEN_DIRNAME) {
> -+            gntype = name-> type;
> -+            switch (gntype) {
> -+            case GEN_DIRNAME:
> - 
> -                 /* we special-case DirName as a tuple of tuples of
> attributes */
> - 
> -@@ -764,11 +769,61 @@
> -                     goto fail;
> -                 }
> -                 PyTuple_SET_ITEM(t, 1, v);
> -+                break;
> - 
> --            } else {
> -+            case GEN_EMAIL:
> -+            case GEN_DNS:
> -+            case GEN_URI:
> -+                /* GENERAL_NAME_print() doesn't handle NUL bytes in
> ASN1_string
> -+                   correctly. */
> -+                t = PyTuple_New(2);
> -+                if (t == NULL)
> -+                    goto fail;
> -+                switch (gntype) {
> -+                case GEN_EMAIL:
> -+                    v = PyUnicode_FromString("email");
> -+                    as = name->d.rfc822Name;
> -+                    break;
> -+                case GEN_DNS:
> -+                    v = PyUnicode_FromString("DNS");
> -+                    as = name->d.dNSName;
> -+                    break;
> -+                case GEN_URI:
> -+                    v = PyUnicode_FromString("URI");
> -+                    as = name->d.uniformResourceIdentifier;
> -+                    break;
> -+                }
> -+                if (v == NULL) {
> -+                    Py_DECREF(t);
> -+                    goto fail;
> -+                }
> -+                PyTuple_SET_ITEM(t, 0, v);
> -+                v = PyString_FromStringAndSize((char *)ASN1_STRING_data(as),
> -+                                               ASN1_STRING_length(as));
> -+                if (v == NULL) {
> -+                    Py_DECREF(t);
> -+                    goto fail;
> -+                }
> -+                PyTuple_SET_ITEM(t, 1, v);
> -+                break;
> - 
> -+            default:
> -                 /* for everything else, we use the OpenSSL print form */
> --
> -+                switch (gntype) {
> -+                    /* check for new general name type */
> -+                    case GEN_OTHERNAME:
> -+                    case GEN_X400:
> -+                    case GEN_EDIPARTY:
> -+                    case GEN_IPADD:
> -+                    case GEN_RID:
> -+                        break;
> -+                    default:
> -+                        if (PyErr_Warn(PyExc_RuntimeWarning,
> -+				       "Unknown general name type") == -1) {
> -+                            goto fail;
> -+                        }
> -+                        break;
> -+                }
> -                 (void) BIO_reset(biobuf);
> -                 GENERAL_NAME_print(biobuf, name);
> -                 len = BIO_gets(biobuf, buf, sizeof(buf)-1);
> -@@ -794,6 +849,7 @@
> -                     goto fail;
> -                 }
> -                 PyTuple_SET_ITEM(t, 1, v);
> -+		break;
> -             }
> - 
> -             /* and add that rendering to the list */
> diff --git a/python/patches/00186-memory-leak-marshalc.patch
> b/python/patches/00186-memory-leak-marshalc.patch
> deleted file mode 100644
> index 19fb175..0000000
> --- a/python/patches/00186-memory-leak-marshalc.patch
> +++ /dev/null
> @@ -1,57 +0,0 @@
> ---- Python-2.7.5/Python/marshal.c	2013-05-12 05:32:53.000000000 +0200
> -+++ /home/rkuska/hg/cpython/Python/marshal.c	2013-07-18
> 10:33:26.392486235 +0200
> -@@ -88,7 +88,7 @@
> - }
> - 
> - static void
> --w_string(char *s, Py_ssize_t n, WFILE *p)
> -+w_string(const char *s, Py_ssize_t n, WFILE *p)
> - {
> -     if (p->fp != NULL) {
> -         fwrite(s, 1, n, p->fp);
> -@@ -141,6 +141,13 @@
> - # define W_SIZE  w_long
> - #endif
> - 
> -+static void
> -+w_pstring(const char *s, Py_ssize_t n, WFILE *p)
> -+{
> -+        W_SIZE(n, p);
> -+        w_string(s, n, p);
> -+}
> -+
> - /* We assume that Python longs are stored internally in base some power of
> -    2**15; for the sake of portability we'll always read and write them in
> base
> -    exactly 2**15. */
> -@@ -338,9 +345,7 @@
> -         else {
> -             w_byte(TYPE_STRING, p);
> -         }
> --        n = PyString_GET_SIZE(v);
> --        W_SIZE(n, p);
> --        w_string(PyString_AS_STRING(v), n, p);
> -+        w_pstring(PyBytes_AS_STRING(v), PyString_GET_SIZE(v), p);
> -     }
> - #ifdef Py_USING_UNICODE
> -     else if (PyUnicode_CheckExact(v)) {
> -@@ -352,9 +357,7 @@
> -             return;
> -         }
> -         w_byte(TYPE_UNICODE, p);
> --        n = PyString_GET_SIZE(utf8);
> --        W_SIZE(n, p);
> --        w_string(PyString_AS_STRING(utf8), n, p);
> -+        w_pstring(PyString_AS_STRING(utf8), PyString_GET_SIZE(utf8), p);
> -         Py_DECREF(utf8);
> -     }
> - #endif
> -@@ -441,8 +444,7 @@
> -         PyBufferProcs *pb = v->ob_type->tp_as_buffer;
> -         w_byte(TYPE_STRING, p);
> -         n = (*pb->bf_getreadbuffer)(v, 0, (void **)&s);
> --        W_SIZE(n, p);
> --        w_string(s, n, p);
> -+        w_pstring(s, n, p);
> -     }
> -     else {
> -         w_byte(TYPE_UNKNOWN, p);
> diff --git a/python/patches/05000-autotool-intermediates.patch
> b/python/patches/05000-autotool-intermediates.patch
> index cfedc25..dfe0257 100644
> --- a/python/patches/05000-autotool-intermediates.patch
> +++ b/python/patches/05000-autotool-intermediates.patch
> @@ -43,15 +43,6 @@ diff -up ./configure.autotool-intermediates ./configure
>     --with-wctype-functions use wctype.h functions
>     --with-fpectl           enable SIGFPE catching
>     --with-libm=STRING      math library
> -@@ -5171,7 +5181,7 @@ esac
> - $as_echo_n "checking LIBRARY... " >&6; }
> - if test -z "$LIBRARY"
> - then
> --	LIBRARY='libpython$(VERSION).a'
> -+	LIBRARY='libpython$(VERSION)$(DEBUG_EXT).a'
> - fi
> - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBRARY" >&5
> - $as_echo "$LIBRARY" >&6; }
>  @@ -5343,8 +5353,8 @@ $as_echo "#define Py_ENABLE_SHARED 1" >>
>   	  INSTSONAME="$LDLIBRARY".$SOVERSION
>             ;;
> @@ -60,7 +51,7 @@ diff -up ./configure.autotool-intermediates ./configure
>  -	  BLDLIBRARY='-L. -lpython$(VERSION)'
>  +	  LDLIBRARY='libpython$(VERSION)$(DEBUG_EXT).so'
>  +	  BLDLIBRARY='-L. -lpython$(VERSION)$(DEBUG_EXT)'
> - 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
> + 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PA
> TH}}
>   	  case $ac_sys_system in
>   	      FreeBSD*)
>  @@ -5367,7 +5377,7 @@ $as_echo "#define Py_ENABLE_SHARED 1" >>
> @@ -69,7 +60,7 @@ diff -up ./configure.autotool-intermediates ./configure
>   	  LDLIBRARY='libpython$(VERSION).so'
>  -	  BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
>  +	  BLDLIBRARY='-L. -lpython$(VERSION)'
> - 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
> + 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PA
> TH}}
>   	  ;;
>       atheos*)
>  @@ -5894,6 +5904,14 @@ $as_echo "no" >&6; }
> diff --git a/python/patches/python-2.5.1-plural-fix.patch
> b/python/patches/python-2.5.1-plural-fix.patch
> index 040adaf..5002cb2 100644
> --- a/python/patches/python-2.5.1-plural-fix.patch
> +++ b/python/patches/python-2.5.1-plural-fix.patch
> @@ -7,6 +7,6 @@ diff -up Python-2.5.1/Lib/gettext.py.plural Python-
> 2.5.1/Lib/gettext.py
>                           continue
>  +                    if item.startswith("#"):
>  +                        continue
> +                     k = v = None
>                       if ':' in item:
>                           k, v = item.split(':', 1)
> -                         k = k.strip().lower()
> diff --git a/python/patches/python-2.6-rpath.patch b/python/patches/python-
> 2.6-rpath.patch
> index 43e3ec4..33d7cf6 100644
> --- a/python/patches/python-2.6-rpath.patch
> +++ b/python/patches/python-2.6-rpath.patch
> @@ -7,6 +7,6 @@ diff -up Python-2.6/configure.ac.rpath Python-2.6/configure.ac
>   	  LDLIBRARY='libpython$(VERSION).so'
>  -	  BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
>  +	  BLDLIBRARY='-L. -lpython$(VERSION)'
> - 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
> + 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PA
> TH}}
>   	  ;;
>       atheos*)
> diff --git a/python/patches/python-2.7rc1-binutils-no-dep.patch
> b/python/patches/python-2.7rc1-binutils-no-dep.patch
> deleted file mode 100644
> index ee6157c..0000000
> --- a/python/patches/python-2.7rc1-binutils-no-dep.patch
> +++ /dev/null
> @@ -1,14 +0,0 @@
> -diff -up Python-2.7rc1/Lib/ctypes/util.py.binutils-no-dep Python-
> 2.7rc1/Lib/ctypes/util.py
> ---- Python-2.7rc1/Lib/ctypes/util.py.binutils-no-dep	2010-03-15
> 09:42:23.000000000 -0400
> -+++ Python-2.7rc1/Lib/ctypes/util.py	2010-06-06 05:03:02.155975210
> -0400
> -@@ -140,7 +140,9 @@ elif os.name == "posix":
> -             dump = f.read()
> -             rv = f.close()
> -             if rv == 10:
> --                raise OSError, 'objdump command not found'
> -+                return os.path.basename(f) #  This is good for GLibc, I
> think,
> -+                                           # and a dep on binutils is big
> (for
> -+                                           # live CDs).
> -             f = os.popen(cmd)
> -             try:
> -                 data = f.read()
> diff --git a/python/python-2.7.12-lib64.patch b/python/python-2.7.12-
> lib64.patch
> new file mode 100644
> index 0000000..00c835c
> --- /dev/null
> +++ b/python/python-2.7.12-lib64.patch
> @@ -0,0 +1,184 @@
> +diff --git a/Lib/distutils/command/install.py
> b/Lib/distutils/command/install.py
> +index b9f1c6c..7b23714 100644
> +--- a/Lib/distutils/command/install.py
> ++++ b/Lib/distutils/command/install.py
> +@@ -42,14 +42,14 @@ else:
> + INSTALL_SCHEMES = {
> +     'unix_prefix': {
> +         'purelib': '$base/lib/python$py_version_short/site-packages',
> +-        'platlib': '$platbase/lib/python$py_version_short/site-packages',
> ++        'platlib': '$platbase/lib64/python$py_version_short/site-packages',
> +         'headers': '$base/include/python$py_version_short/$dist_name',
> +         'scripts': '$base/bin',
> +         'data'   : '$base',
> +         },
> +     'unix_home': {
> +         'purelib': '$base/lib/python',
> +-        'platlib': '$base/lib/python',
> ++        'platlib': '$base/lib64/python',
> +         'headers': '$base/include/python/$dist_name',
> +         'scripts': '$base/bin',
> +         'data'   : '$base',
> +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
> +index 068d1ba..3e7f077 100644
> +--- a/Lib/distutils/sysconfig.py
> ++++ b/Lib/distutils/sysconfig.py
> +@@ -119,8 +119,12 @@ def get_python_lib(plat_specific=0, standard_lib=0,
> prefix=None):
> +         prefix = plat_specific and EXEC_PREFIX or PREFIX
> + 
> +     if os.name == "posix":
> ++        if plat_specific or standard_lib:
> ++            lib = "lib64"
> ++        else:
> ++            lib = "lib"
> +         libpython = os.path.join(prefix,
> +-                                 "lib", "python" + get_python_version())
> ++                                 lib, "python" + get_python_version())
> +         if standard_lib:
> +             return libpython
> +         else:
> +diff --git a/Lib/site.py b/Lib/site.py
> +index e8433b4..e8e6b50 100644
> +--- a/Lib/site.py
> ++++ b/Lib/site.py
> +@@ -288,12 +288,16 @@ def getsitepackages():
> +         if sys.platform in ('os2emx', 'riscos'):
> +             sitepackages.append(os.path.join(prefix, "Lib", "site-
> packages"))
> +         elif os.sep == '/':
> ++            sitepackages.append(os.path.join(prefix, "lib64",
> ++                                        "python" + sys.version[:3],
> ++                                        "site-packages"))
> +             sitepackages.append(os.path.join(prefix, "lib",
> +                                         "python" + sys.version[:3],
> +                                         "site-packages"))
> +             sitepackages.append(os.path.join(prefix, "lib", "site-python"))
> +         else:
> +             sitepackages.append(prefix)
> ++            sitepackages.append(os.path.join(prefix, "lib64", "site-
> packages"))
> +             sitepackages.append(os.path.join(prefix, "lib", "site-
> packages"))
> +         if sys.platform == "darwin":
> +             # for framework builds *only* we add the standard Apple
> +diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
> +index 78c4809..3b9e74d 100644
> +--- a/Lib/test/test_site.py
> ++++ b/Lib/test/test_site.py
> +@@ -246,17 +246,20 @@ class HelperFunctionsTests(unittest.TestCase):
> +             self.assertEqual(dirs[2], wanted)
> +         elif os.sep == '/':
> +             # OS X non-framwework builds, Linux, FreeBSD, etc
> +-            self.assertEqual(len(dirs), 2)
> +-            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
> ++            self.assertEqual(len(dirs), 3)
> ++            wanted = os.path.join('xoxo', 'lib64', 'python' +
> sys.version[:3],
> +                                   'site-packages')
> +             self.assertEqual(dirs[0], wanted)
> +-            wanted = os.path.join('xoxo', 'lib', 'site-python')
> ++            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
> ++                                   'site-packages')
> +             self.assertEqual(dirs[1], wanted)
> ++            wanted = os.path.join('xoxo', 'lib', 'site-python')
> ++            self.assertEqual(dirs[2], wanted)
> +         else:
> +             # other platforms
> +             self.assertEqual(len(dirs), 2)
> +             self.assertEqual(dirs[0], 'xoxo')
> +-            wanted = os.path.join('xoxo', 'lib', 'site-packages')
> ++            wanted = os.path.join('xoxo', 'lib64', 'site-packages')
> +             self.assertEqual(dirs[1], wanted)
> + 
> + class PthFile(object):
> +diff --git a/Makefile.pre.in b/Makefile.pre.in
> +index 5741a4c..0faa5c5 100644
> +--- a/Makefile.pre.in
> ++++ b/Makefile.pre.in
> +@@ -111,7 +111,7 @@ LIBDIR=		@libdir@
> + MANDIR=		@mandir@
> + INCLUDEDIR=	@includedir@
> + CONFINCLUDEDIR=	$(exec_prefix)/include
> +-SCRIPTDIR=	$(prefix)/lib
> ++SCRIPTDIR=	$(prefix)/lib64
> + 
> + # Detailed destination directories
> + BINLIBDEST=	$(LIBDIR)/python$(VERSION)
> +diff --git a/Modules/Setup.dist b/Modules/Setup.dist
> +index c70a0d6..051fd41 100644
> +--- a/Modules/Setup.dist
> ++++ b/Modules/Setup.dist
> +@@ -416,7 +416,7 @@ gdbm gdbmmodule.c -lgdbm
> + # Edit the variables DB and DBLIBVERto point to the db top directory
> + # and the subdirectory of PORT where you built it.
> + DBINC=/usr/include/libdb
> +-DBLIB=/usr/lib
> ++DBLIB=/usr/lib64
> + _bsddb _bsddb.c -I$(DBINC) -L$(DBLIB) -ldb
> + 
> + # Historical Berkeley DB 1.85
> +@@ -462,7 +462,7 @@ cPickle cPickle.c
> + # Andrew Kuchling's zlib module.
> + # This require zlib 1.1.3 (or later).
> + # See http://www.gzip.org/zlib/
> +-zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
> ++zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib64 -lz
> + 
> + # Interface to the Expat XML parser
> + #
> +diff --git a/Modules/getpath.c b/Modules/getpath.c
> +index 428684c..9ef6711 100644
> +--- a/Modules/getpath.c
> ++++ b/Modules/getpath.c
> +@@ -108,7 +108,7 @@ static char prefix[MAXPATHLEN+1];
> + static char exec_prefix[MAXPATHLEN+1];
> + static char progpath[MAXPATHLEN+1];
> + static char *module_search_path = NULL;
> +-static char lib_python[] = "lib/python" VERSION;
> ++static char lib_python[] = "lib64/python" VERSION;
> + 
> + static void
> + reduce(char *dir)
> +@@ -550,7 +550,7 @@ calculate_path(void)
> +             fprintf(stderr,
> +                 "Could not find platform dependent libraries
> <exec_prefix>\n");
> +         strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN);
> +-        joinpath(exec_prefix, "lib/lib-dynload");
> ++        joinpath(exec_prefix, "lib64/lib-dynload");
> +     }
> +     /* If we found EXEC_PREFIX do *not* reduce it!  (Yet.) */
> + 
> +diff --git a/setup.py b/setup.py
> +index 55c4f5d..19efe82 100644
> +--- a/setup.py
> ++++ b/setup.py
> +@@ -456,7 +456,7 @@ class PyBuildExt(build_ext):
> +     def detect_modules(self):
> +         # Ensure that /usr/local is always used
> +         if not cross_compiling:
> +-            add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
> ++            add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64')
> +             add_dir_to_list(self.compiler.include_dirs,
> '/usr/local/include')
> +         if cross_compiling:
> +             self.add_gcc_paths()
> +@@ -782,11 +782,11 @@ class PyBuildExt(build_ext):
> +             elif curses_library:
> +                 readline_libs.append(curses_library)
> +             elif self.compiler.find_library_file(lib_dirs +
> +-                                                     ['/usr/lib/termcap'],
> ++                                                     ['/usr/lib64/termcap'],
> +                                                      'termcap'):
> +                 readline_libs.append('termcap')
> +             exts.append( Extension('readline', ['readline.c'],
> +-                                   library_dirs=['/usr/lib/termcap'],
> ++                                   library_dirs=['/usr/lib64/termcap'],
> +                                    extra_link_args=readline_extra_link_args,
> +                                    libraries=readline_libs) )
> +         else:
> +@@ -821,8 +821,8 @@ class PyBuildExt(build_ext):
> +             if krb5_h:
> +                 ssl_incs += krb5_h
> +         ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
> +-                                     ['/usr/local/ssl/lib',
> +-                                      '/usr/contrib/ssl/lib/'
> ++                                     ['/usr/local/ssl/lib64',
> ++                                      '/usr/contrib/ssl/lib64/'
> +                                      ] )
> + 
> +         if (ssl_incs is not None and
> diff --git a/python/python-2.7.3-lib64.patch b/python/python-2.7.3-lib64.patch
> deleted file mode 100644
> index 71f32c5..0000000
> --- a/python/python-2.7.3-lib64.patch
> +++ /dev/null
> @@ -1,196 +0,0 @@
> -diff -up Python-2.7.3/Lib/distutils/command/install.py.lib64 Python-
> 2.7.3/Lib/distutils/command/install.py
> ---- Python-2.7.3/Lib/distutils/command/install.py.lib64	2012-04-09
> 19:07:29.000000000 -0400
> -+++ Python-2.7.3/Lib/distutils/command/install.py	2013-02-19
> 13:58:20.446015129 -0500
> -@@ -42,14 +42,14 @@ else:
> - INSTALL_SCHEMES = {
> -     'unix_prefix': {
> -         'purelib': '$base/lib/python$py_version_short/site-packages',
> --        'platlib': '$platbase/lib/python$py_version_short/site-packages',
> -+        'platlib': '$platbase/lib64/python$py_version_short/site-packages',
> -         'headers': '$base/include/python$py_version_short/$dist_name',
> -         'scripts': '$base/bin',
> -         'data'   : '$base',
> -         },
> -     'unix_home': {
> -         'purelib': '$base/lib/python',
> --        'platlib': '$base/lib/python',
> -+        'platlib': '$base/lib64/python',
> -         'headers': '$base/include/python/$dist_name',
> -         'scripts': '$base/bin',
> -         'data'   : '$base',
> -diff -up Python-2.7.3/Lib/distutils/sysconfig.py.lib64 Python-
> 2.7.3/Lib/distutils/sysconfig.py
> ---- Python-2.7.3/Lib/distutils/sysconfig.py.lib64	2012-04-09
> 19:07:29.000000000 -0400
> -+++ Python-2.7.3/Lib/distutils/sysconfig.py	2013-02-19
> 13:58:20.446015129 -0500
> -@@ -114,8 +114,12 @@ def get_python_lib(plat_specific=0, stan
> -         prefix = plat_specific and EXEC_PREFIX or PREFIX
> - 
> -     if os.name == "posix":
> -+        if plat_specific or standard_lib:
> -+            lib = "lib64"
> -+        else:
> -+            lib = "lib"
> -         libpython = os.path.join(prefix,
> --                                 "lib", "python" + get_python_version())
> -+                                 lib, "python" + get_python_version())
> -         if standard_lib:
> -             return libpython
> -         else:
> -diff -up Python-2.7.3/Lib/site.py.lib64 Python-2.7.3/Lib/site.py
> ---- Python-2.7.3/Lib/site.py.lib64	2012-04-09 19:07:31.000000000 -0400
> -+++ Python-2.7.3/Lib/site.py	2013-02-19 13:58:20.447015128 -0500
> -@@ -300,12 +300,16 @@ def getsitepackages():
> -         if sys.platform in ('os2emx', 'riscos'):
> -             sitepackages.append(os.path.join(prefix, "Lib", "site-
> packages"))
> -         elif os.sep == '/':
> -+            sitepackages.append(os.path.join(prefix, "lib64",
> -+                                        "python" + sys.version[:3],
> -+                                        "site-packages"))
> -             sitepackages.append(os.path.join(prefix, "lib",
> -                                         "python" + sys.version[:3],
> -                                         "site-packages"))
> -             sitepackages.append(os.path.join(prefix, "lib", "site-python"))
> -         else:
> -             sitepackages.append(prefix)
> -+            sitepackages.append(os.path.join(prefix, "lib64", "site-
> packages"))
> -             sitepackages.append(os.path.join(prefix, "lib", "site-
> packages"))
> -         if sys.platform == "darwin":
> -             # for framework builds *only* we add the standard Apple
> -diff -up Python-2.7.3/Lib/test/test_site.py.lib64 Python-
> 2.7.3/Lib/test/test_site.py
> ---- Python-2.7.3/Lib/test/test_site.py.lib64	2012-04-09
> 19:07:32.000000000 -0400
> -+++ Python-2.7.3/Lib/test/test_site.py	2013-02-19 13:58:20.447015128
> -0500
> -@@ -241,17 +241,20 @@ class HelperFunctionsTests(unittest.Test
> -             self.assertEqual(dirs[2], wanted)
> -         elif os.sep == '/':
> -             # OS X non-framwework builds, Linux, FreeBSD, etc
> --            self.assertEqual(len(dirs), 2)
> --            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
> -+            self.assertEqual(len(dirs), 3)
> -+            wanted = os.path.join('xoxo', 'lib64', 'python' +
> sys.version[:3],
> -                                   'site-packages')
> -             self.assertEqual(dirs[0], wanted)
> --            wanted = os.path.join('xoxo', 'lib', 'site-python')
> -+            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
> -+                                  'site-packages')
> -             self.assertEqual(dirs[1], wanted)
> -+            wanted = os.path.join('xoxo', 'lib', 'site-python')
> -+            self.assertEqual(dirs[2], wanted)
> -         else:
> -             # other platforms
> -             self.assertEqual(len(dirs), 2)
> -             self.assertEqual(dirs[0], 'xoxo')
> --            wanted = os.path.join('xoxo', 'lib', 'site-packages')
> -+            wanted = os.path.join('xoxo', 'lib64', 'site-packages')
> -             self.assertEqual(dirs[1], wanted)
> - 
> - class PthFile(object):
> -diff -up Python-2.7.3/Makefile.pre.in.lib64 Python-2.7.3/Makefile.pre.in
> ---- Python-2.7.3/Makefile.pre.in.lib64	2013-02-19 13:58:20.435015131
> -0500
> -+++ Python-2.7.3/Makefile.pre.in	2013-02-19 13:58:20.447015128 -0500
> -@@ -97,7 +97,7 @@ LIBDIR=		@libdir@
> - MANDIR=		@mandir@
> - INCLUDEDIR=	@includedir@
> - CONFINCLUDEDIR=	$(exec_prefix)/include
> --SCRIPTDIR=	$(prefix)/lib
> -+SCRIPTDIR=	$(prefix)/lib64
> - 
> - # Detailed destination directories
> - BINLIBDEST=	$(LIBDIR)/python$(VERSION)
> -diff -up Python-2.7.3/Modules/getpath.c.lib64 Python-2.7.3/Modules/getpath.c
> ---- Python-2.7.3/Modules/getpath.c.lib64	2012-04-09 19:07:34.000000000
> -0400
> -+++ Python-2.7.3/Modules/getpath.c	2013-02-19 13:58:20.448015128 -0500
> -@@ -117,8 +117,8 @@
> - #endif
> - 
> - #ifndef PYTHONPATH
> --#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
> --              EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
> -+#define PYTHONPATH PREFIX "/lib64/python" VERSION ":" \
> -+              EXEC_PREFIX "/lib64/python" VERSION "/lib-dynload"
> - #endif
> - 
> - #ifndef LANDMARK
> -@@ -129,7 +129,7 @@ static char prefix[MAXPATHLEN+1];
> - static char exec_prefix[MAXPATHLEN+1];
> - static char progpath[MAXPATHLEN+1];
> - static char *module_search_path = NULL;
> --static char lib_python[] = "lib/python" VERSION;
> -+static char lib_python[] = "lib64/python" VERSION;
> - 
> - static void
> - reduce(char *dir)
> -@@ -528,7 +528,7 @@ calculate_path(void)
> -     }
> -     else
> -         strncpy(zip_path, PREFIX, MAXPATHLEN);
> --    joinpath(zip_path, "lib/python00.zip");
> -+    joinpath(zip_path, "lib64/python00.zip");
> -     bufsz = strlen(zip_path);   /* Replace "00" with version */
> -     zip_path[bufsz - 6] = VERSION[0];
> -     zip_path[bufsz - 5] = VERSION[2];
> -@@ -538,7 +538,7 @@ calculate_path(void)
> -             fprintf(stderr,
> -                 "Could not find platform dependent libraries
> <exec_prefix>\n");
> -         strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN);
> --        joinpath(exec_prefix, "lib/lib-dynload");
> -+        joinpath(exec_prefix, "lib64/lib-dynload");
> -     }
> -     /* If we found EXEC_PREFIX do *not* reduce it!  (Yet.) */
> - 
> -diff -up Python-2.7.3/Modules/Setup.dist.lib64 Python-
> 2.7.3/Modules/Setup.dist
> ---- Python-2.7.3/Modules/Setup.dist.lib64	2013-02-19
> 13:58:20.442015131 -0500
> -+++ Python-2.7.3/Modules/Setup.dist	2013-02-19 14:02:25.255998391
> -0500
> -@@ -413,7 +413,7 @@ gdbm gdbmmodule.c -lgdbm
> - # Edit the variables DB and DBLIBVERto point to the db top directory
> - # and the subdirectory of PORT where you built it.
> - DBINC=/usr/include/libdb
> --DBLIB=/usr/lib
> -+DBLIB=/usr/lib64
> - _bsddb _bsddb.c -I$(DBINC) -L$(DBLIB) -ldb
> - 
> - # Historical Berkeley DB 1.85
> -@@ -459,7 +459,7 @@ cPickle cPickle.c
> - # Andrew Kuchling's zlib module.
> - # This require zlib 1.1.3 (or later).
> - # See http://www.gzip.org/zlib/
> --zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
> -+zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib64 -lz
> - 
> - # Interface to the Expat XML parser
> - #
> -diff -up Python-2.7.3/setup.py.lib64 Python-2.7.3/setup.py
> ---- Python-2.7.3/setup.py.lib64	2012-04-09 19:07:36.000000000 -0400
> -+++ Python-2.7.3/setup.py	2013-02-19 13:58:20.449015129 -0500
> -@@ -369,7 +369,7 @@ class PyBuildExt(build_ext):
> - 
> -     def detect_modules(self):
> -         # Ensure that /usr/local is always used
> --        add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
> -+        add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64')
> -         add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
> -         self.add_gcc_paths()
> -         self.add_multiarch_paths()
> -@@ -677,11 +677,11 @@ class PyBuildExt(build_ext):
> -             elif curses_library:
> -                 readline_libs.append(curses_library)
> -             elif self.compiler.find_library_file(lib_dirs +
> --                                                     ['/usr/lib/termcap'],
> -+                                                     ['/usr/lib64/termcap'],
> -                                                      'termcap'):
> -                 readline_libs.append('termcap')
> -             exts.append( Extension('readline', ['readline.c'],
> --                                   library_dirs=['/usr/lib/termcap'],
> -+                                   library_dirs=['/usr/lib64/termcap'],
> -                                    extra_link_args=readline_extra_link_args,
> -                                    libraries=readline_libs) )
> -         else:
> -@@ -715,8 +715,8 @@ class PyBuildExt(build_ext):
> -             if krb5_h:
> -                 ssl_incs += krb5_h
> -         ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
> --                                     ['/usr/local/ssl/lib',
> --                                      '/usr/contrib/ssl/lib/'
> -+                                     ['/usr/local/ssl/lib64',
> -+                                      '/usr/contrib/ssl/lib64/'
> -                                      ] )
> - 
> -         if (ssl_incs is not None and
> diff --git a/python/python.nm b/python/python.nm
> index 84704b5..0123eb9 100644
> --- a/python/python.nm
> +++ b/python/python.nm
> @@ -5,8 +5,8 @@
>  
>  name       = python
>  major_ver  = 2.7
> -version    = %{major_ver}.5
> -release    = 2
> +version    = %{major_ver}.12
> +release    = 1
>  thisapp    = Python-%{version}
>  
>  groups     = Development/Languages
> @@ -35,7 +35,6 @@ build
>  		glibc-headers >= 2.16-4
>  		libdb-devel
>  		libffi-devel
> -		libselinux-devel
>  		ncurses-devel
>  		openssl-devel
>  		pakfire-builder >= 0.9.23-4
> @@ -51,7 +50,7 @@ build
>  	export OPT      = %{CFLAGS}
>  
>  	if "%{lib}" == "lib64"
> -		patches += %{DIR_SOURCE}/python-2.7.3-lib64.patch
> +		patches += %{DIR_SOURCE}/python-2.7.12-lib64.patch
>  		patches += %{DIR_SOURCE}/python-2.7-lib64-sysconfig.patch
>  	end
>