From 3df0026b20fff816d718aef192844f712ebb2b14 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Mon, 28 Oct 2013 13:14:00 -0400 Subject: [PATCH 1/4] Update patch to find ca_certs in the correct place. --- python-urllib3-default-ssl-cert-validate.patch | 2 +- python-urllib3.spec | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/python-urllib3-default-ssl-cert-validate.patch b/python-urllib3-default-ssl-cert-validate.patch index 2455459..38eea0f 100644 --- a/python-urllib3-default-ssl-cert-validate.patch +++ b/python-urllib3-default-ssl-cert-validate.patch @@ -14,7 +14,7 @@ Index: urllib3-1.5/urllib3/connectionpool.py block=False, headers=None, key_file=None, cert_file=None, - cert_reqs='CERT_NONE', ca_certs=None): -+ cert_reqs='CERT_REQUIRED', ca_certs='/etc/ssl/certs/ca-certificates.crt'): ++ cert_reqs='CERT_REQUIRED', ca_certs='/etc/ssl/certs/ca-bundle.crt'): super(HTTPSConnectionPool, self).__init__(host, port, strict, timeout, maxsize, diff --git a/python-urllib3.spec b/python-urllib3.spec index 53dbb36..eef1de7 100644 --- a/python-urllib3.spec +++ b/python-urllib3.spec @@ -8,7 +8,7 @@ Name: python-%{srcname} Version: 1.5 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Python HTTP library with thread-safe connection pooling and file post License: MIT @@ -139,6 +139,9 @@ popd %endif # with_python3 %changelog +* Mon Oct 28 2013 Ralph Bean - 1.5-7 +- Update patch to find ca_certs in the correct place. + * Tue Jun 11 2013 Toshio Kuratomi - 1.5-6 - Fix Requires of python-ordereddict to only apply to RHEL From e6e52f508ef4a9620034b1a886abed23b3ec5c39 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Fri, 13 Mar 2015 16:01:40 -0400 Subject: [PATCH 2/4] Moving into rhel-6.7 --- .gitignore | 1 - dead.package | 1 + python-urllib3-accept-header-for-proxy.patch | 28 --- ...on-urllib3-default-ssl-cert-validate.patch | 20 --- python-urllib3-old-nose-compat.patch | 10 -- python-urllib3-py2.6-compat.patch | 89 ---------- python-urllib3-unbundle.patch | 162 ----------------- python-urllib3.spec | 166 ------------------ sources | 1 - 9 files changed, 1 insertion(+), 477 deletions(-) delete mode 100644 .gitignore create mode 100644 dead.package delete mode 100644 python-urllib3-accept-header-for-proxy.patch delete mode 100644 python-urllib3-default-ssl-cert-validate.patch delete mode 100644 python-urllib3-old-nose-compat.patch delete mode 100644 python-urllib3-py2.6-compat.patch delete mode 100644 python-urllib3-unbundle.patch delete mode 100644 python-urllib3.spec delete mode 100644 sources diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 052920f..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/urllib3-1.5.tar.gz diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..a956d36 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Moving into rhel-6.7 diff --git a/python-urllib3-accept-header-for-proxy.patch b/python-urllib3-accept-header-for-proxy.patch deleted file mode 100644 index 8d89f27..0000000 --- a/python-urllib3-accept-header-for-proxy.patch +++ /dev/null @@ -1,28 +0,0 @@ -From ea36acfc8a997a19ba1ead58de0d1f01e9eb540f Mon Sep 17 00:00:00 2001 -From: kevin -Date: Thu, 30 Aug 2012 00:14:12 -0400 -Subject: [PATCH 1/4] Fix overwritten Accept header when proxy is used - -When a request specifies both an Accept header and a proxy server, the -Accept header value is overwritten. ---- - urllib3/poolmanager.py | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/urllib3/poolmanager.py b/urllib3/poolmanager.py -index 8f5b54c..7d7d6e4 100644 ---- a/urllib3/poolmanager.py -+++ b/urllib3/poolmanager.py -@@ -141,7 +141,8 @@ def _set_proxy_headers(self, headers=None): - headers = headers or {} - - # Same headers are curl passes for --proxy1.0 -- headers['Accept'] = '*/*' -+ if 'Accept' not in headers: -+ headers['Accept'] = '*/*' - headers['Proxy-Connection'] = 'Keep-Alive' - - return headers --- -1.7.10 - diff --git a/python-urllib3-default-ssl-cert-validate.patch b/python-urllib3-default-ssl-cert-validate.patch deleted file mode 100644 index 38eea0f..0000000 --- a/python-urllib3-default-ssl-cert-validate.patch +++ /dev/null @@ -1,20 +0,0 @@ -Author: Jamie Strandboge -Description: require SSL certificate validation by default by using - CERT_REQUIRED and using the system /etc/ssl/certs/ca-certificates.crt -Bug-Ubuntu: https://launchpad.net/bugs/1047054 -Modified for Fedora by Ralph Bean -Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=855320 - -Index: urllib3-1.5/urllib3/connectionpool.py -=================================================================== ---- urllib3-1.5.orig/urllib3/connectionpool.py -+++ urllib3-1.5/urllib3/connectionpool.py -@@ -504,7 +504,7 @@ class HTTPSConnectionPool(HTTPConnection - strict=False, timeout=None, maxsize=1, - block=False, headers=None, - key_file=None, cert_file=None, -- cert_reqs='CERT_NONE', ca_certs=None): -+ cert_reqs='CERT_REQUIRED', ca_certs='/etc/ssl/certs/ca-bundle.crt'): - - super(HTTPSConnectionPool, self).__init__(host, port, - strict, timeout, maxsize, diff --git a/python-urllib3-old-nose-compat.patch b/python-urllib3-old-nose-compat.patch deleted file mode 100644 index e76dda5..0000000 --- a/python-urllib3-old-nose-compat.patch +++ /dev/null @@ -1,10 +0,0 @@ -Index: urllib3-1.5/setup.cfg -=================================================================== ---- urllib3-1.5.orig/setup.cfg -+++ urllib3-1.5/setup.cfg -@@ -1,5 +1,4 @@ - [nosetests] --logging-clear-handlers = true - with-coverage = true - cover-package = urllib3 - diff --git a/python-urllib3-py2.6-compat.patch b/python-urllib3-py2.6-compat.patch deleted file mode 100644 index afcb355..0000000 --- a/python-urllib3-py2.6-compat.patch +++ /dev/null @@ -1,89 +0,0 @@ -Index: urllib3-1.5/test/test_collections.py -=================================================================== ---- urllib3-1.5.orig/test/test_collections.py -+++ urllib3-1.5/test/test_collections.py -@@ -122,9 +122,11 @@ class TestLRUContainer(unittest.TestCase - def test_iter(self): - d = Container() - -- with self.assertRaises(NotImplementedError): -+ def to_test(): - for i in d: - self.fail("Iteration shouldn't be implemented.") - -+ self.assertRaises(NotImplementedError, to_test) -+ - if __name__ == '__main__': - unittest.main() -Index: urllib3-1.5/test/test_connectionpool.py -=================================================================== ---- urllib3-1.5.orig/test/test_connectionpool.py -+++ urllib3-1.5/test/test_connectionpool.py -@@ -98,8 +98,7 @@ class TestConnectionPool(unittest.TestCa - - def _test(exception, expect): - pool._make_request = lambda *args, **kwargs: _raise(exception) -- with self.assertRaises(expect): -- pool.request('GET', '/') -+ self.assertRaises(expect, pool.request, 'GET', '/') - - self.assertEqual(pool.pool.qsize(), POOL_SIZE) - -@@ -114,15 +113,13 @@ class TestConnectionPool(unittest.TestCa - # MaxRetryError, not EmptyPoolError - # See: https://github.com/shazow/urllib3/issues/76 - pool._make_request = lambda *args, **kwargs: _raise(HTTPException) -- with self.assertRaises(MaxRetryError): -- pool.request('GET', '/', retries=1, pool_timeout=0.01) -+ self.assertRaises(MaxRetryError, pool.request, 'GET', '/', retries=1, pool_timeout=0.01) - self.assertEqual(pool.pool.qsize(), POOL_SIZE) - - def test_assert_same_host(self): - c = connection_from_url('http://google.com:80') - -- with self.assertRaises(HostChangedError): -- c.request('GET', 'http://yahoo.com:80', assert_same_host=True) -+ self.assertRaises(HostChangedError, c.request, 'GET', 'http://yahoo.com:80', assert_same_host=True) - - def test_pool_close(self): - pool = connection_from_url('http://google.com:80') -@@ -139,16 +136,13 @@ class TestConnectionPool(unittest.TestCa - pool.close() - self.assertEqual(pool.pool, None) - -- with self.assertRaises(ClosedPoolError): -- pool._get_conn() -+ self.assertRaises(ClosedPoolError, pool._get_conn) - - pool._put_conn(conn3) - -- with self.assertRaises(ClosedPoolError): -- pool._get_conn() -+ self.assertRaises(ClosedPoolError, pool._get_conn) - -- with self.assertRaises(Empty): -- old_pool_queue.get(block=False) -+ self.assertRaises(Empty, old_pool_queue.get, block=False) - - - if __name__ == '__main__': -Index: urllib3-1.5/test/test_poolmanager.py -=================================================================== ---- urllib3-1.5.orig/test/test_poolmanager.py -+++ urllib3-1.5/test/test_poolmanager.py -@@ -54,13 +54,11 @@ class TestPoolManager(unittest.TestCase) - p.clear() - self.assertEqual(len(p.pools), 0) - -- with self.assertRaises(ClosedPoolError): -- conn_pool._get_conn() -+ self.assertRaises(ClosedPoolError, conn_pool._get_conn) - - conn_pool._put_conn(conn) - -- with self.assertRaises(ClosedPoolError): -- conn_pool._get_conn() -+ self.assertRaises(ClosedPoolError, conn_pool._get_conn) - - self.assertEqual(len(p.pools), 0) - diff --git a/python-urllib3-unbundle.patch b/python-urllib3-unbundle.patch deleted file mode 100644 index 1b5dd64..0000000 --- a/python-urllib3-unbundle.patch +++ /dev/null @@ -1,162 +0,0 @@ -Index: urllib3-1.5/urllib3/_collections.py -=================================================================== ---- urllib3-1.5.orig/urllib3/_collections.py -+++ urllib3-1.5/urllib3/_collections.py -@@ -10,7 +10,10 @@ from threading import Lock - try: # Python 2.7+ - from collections import OrderedDict - except ImportError: -- from .packages.ordered_dict import OrderedDict -+ try: # backport package -+ from ordereddict import OrderedDict -+ except ImportError: -+ from .packages.ordered_dict import OrderedDict - - - __all__ = ['RecentlyUsedContainer'] -Index: urllib3-1.5/urllib3/connectionpool.py -=================================================================== ---- urllib3-1.5.orig/urllib3/connectionpool.py -+++ urllib3-1.5/urllib3/connectionpool.py -@@ -51,8 +51,20 @@ from .exceptions import ( - TimeoutError, - ) - --from .packages.ssl_match_hostname import match_hostname, CertificateError --from .packages import six -+try: -+ # python3.2+ -+ from ssl import match_hostname, CertificateError -+except ImportError: -+ try: -+ # Older python where the backport from pypi is installed -+ from backports.ssl_match_hostname import match_hostname, CertificateError -+ except ImportError: -+ # Other older python we use our bundled copy -+ from .packages.ssl_match_hostname import match_hostname, CertificateError -+try: -+ import six -+except ImportError: -+ from .packages import six - - - xrange = six.moves.xrange -Index: urllib3-1.5/urllib3/filepost.py -=================================================================== ---- urllib3-1.5.orig/urllib3/filepost.py -+++ urllib3-1.5/urllib3/filepost.py -@@ -10,8 +10,12 @@ import mimetypes - from uuid import uuid4 - from io import BytesIO - --from .packages import six --from .packages.six import b -+try: -+ import six -+ from six import b -+except ImportError: -+ from .packages import six -+ from .packages.six import b - - writer = codecs.lookup('utf-8')[3] - -Index: urllib3-1.5/urllib3/response.py -=================================================================== ---- urllib3-1.5.orig/urllib3/response.py -+++ urllib3-1.5/urllib3/response.py -@@ -11,7 +11,10 @@ import zlib - from io import BytesIO - - from .exceptions import DecodeError --from .packages.six import string_types as basestring -+try: -+ from six import string_types as basestring -+except ImportError: -+ from .packages.six import string_types as basestring - - - log = logging.getLogger(__name__) -Index: urllib3-1.5/urllib3/util.py -=================================================================== ---- urllib3-1.5.orig/urllib3/util.py -+++ urllib3-1.5/urllib3/util.py -@@ -18,7 +18,10 @@ except ImportError: # `poll` doesn't exi - except ImportError: # `select` doesn't exist on AppEngine. - select = False - --from .packages import six -+try: -+ import six -+except ImporError: -+ from .packages import six - from .exceptions import LocationParseError - - -Index: urllib3-1.5/test/test_collections.py -=================================================================== ---- urllib3-1.5.orig/test/test_collections.py -+++ urllib3-1.5/test/test_collections.py -@@ -1,7 +1,10 @@ - import unittest - - from urllib3._collections import RecentlyUsedContainer as Container --from urllib3.packages import six -+try: -+ import six -+except ImportError: -+ from urllib3.packages import six - xrange = six.moves.xrange - - -Index: urllib3-1.5/test/test_connectionpool.py -=================================================================== ---- urllib3-1.5.orig/test/test_connectionpool.py -+++ urllib3-1.5/test/test_connectionpool.py -@@ -1,7 +1,16 @@ - import unittest - - from urllib3.connectionpool import connection_from_url, HTTPConnectionPool --from urllib3.packages.ssl_match_hostname import CertificateError -+try: -+ # python3.2+ -+ from ssl import CertificateError -+except ImportError: -+ try: -+ # Older python where the backport from pypi is installed -+ from backports.ssl_match_hostname import CertificateError -+ except ImportError: -+ # Other older python we use our bundled copy -+ from urllib3.packages.ssl_match_hostname import CertificateError - from urllib3.exceptions import ( - ClosedPoolError, - EmptyPoolError, -Index: urllib3-1.5/test/test_filepost.py -=================================================================== ---- urllib3-1.5.orig/test/test_filepost.py -+++ urllib3-1.5/test/test_filepost.py -@@ -1,7 +1,10 @@ - import unittest - - from urllib3.filepost import encode_multipart_formdata, iter_fields --from urllib3.packages.six import b, u -+try: -+ from six import b, u -+except ImportError: -+ from urllib3.packages.six import b, u - - - BOUNDARY = '!! test boundary !!' -Index: urllib3-1.5/setup.py -=================================================================== ---- urllib3-1.5.orig/setup.py -+++ urllib3-1.5/setup.py -@@ -44,8 +44,7 @@ setup(name='urllib3', - author_email='andrey.petrov@shazow.net', - url='http://urllib3.readthedocs.org/', - license='MIT', -- packages=['urllib3', 'dummyserver', 'urllib3.packages', -- 'urllib3.packages.ssl_match_hostname', -+ packages=['urllib3', 'dummyserver', 'urllib3', - ], - requires=requirements, - tests_require=tests_requirements, diff --git a/python-urllib3.spec b/python-urllib3.spec deleted file mode 100644 index eef1de7..0000000 --- a/python-urllib3.spec +++ /dev/null @@ -1,166 +0,0 @@ -%if 0%{?fedora} -%global with_python3 1 -%else -%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")} -%endif - -%global srcname urllib3 - -Name: python-%{srcname} -Version: 1.5 -Release: 7%{?dist} -Summary: Python HTTP library with thread-safe connection pooling and file post - -License: MIT -URL: http://urllib3.readthedocs.org/ -Source0: http://pypi.python.org/packages/source/u/%{srcname}/%{srcname}-%{version}.tar.gz - -# Patch to change default behaviour to check SSL certs for validity -# https://bugzilla.redhat.com/show_bug.cgi?id=855320 -Patch0: python-urllib3-default-ssl-cert-validate.patch - -### TODO: Send this to upstream urllib3 -# make all imports of things in packages try system copies first -Patch1: python-urllib3-unbundle.patch - -# Fix accept header when behind a proxy -#https://github.com/shazow/urllib3/pull/93 -#https://github.com/shazow/urllib3/pull/93.patch -Patch2: python-urllib3-accept-header-for-proxy.patch - -# Remove logging-clear-handlers from setup.cfg because it's not available in RHEL6's nose -Patch100: python-urllib3-old-nose-compat.patch -### TODO: Send this upstream -# Compatibility with python-2.6's unittest -Patch101: python-urllib3-py2.6-compat.patch - -BuildArch: noarch - -Requires: ca-certificates -Requires: python-six - -Requires: python-backports-ssl_match_hostname -%if 0%{?rhel} && 0%{?rhel} <= 6 -BuildRequires: python-ordereddict -Requires: python-ordereddict -%endif - -BuildRequires: python2-devel -# For unittests -BuildRequires: python-nose -BuildRequires: python-six -BuildRequires: python-tornado -BuildRequires: python-backports-ssl_match_hostname - -%if 0%{?with_python3} -BuildRequires: python3-devel -# For unittests -BuildRequires: python3-nose -BuildRequires: python3-six -BuildRequires: python3-tornado -%endif # with_python3 - -%description -Python HTTP module with connection pooling and file POST abilities. - -%if 0%{?with_python3} -%package -n python3-%{srcname} -Requires: ca-certificates -Requires: python3-six -# Note: Will not run with python3 < 3.2 (unless python3-backports-ssl_match_hostname is created) -Summary: Python3 HTTP library with thread-safe connection pooling and file post -%description -n python3-%{srcname} -Python3 HTTP module with connection pooling and file POST abilities. -%endif # with_python3 - - -%prep -%setup -q -n %{srcname}-%{version} - -rm -rf urllib3/packages/ - -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%if 0%{?rhel} && 0%{?rhel} <= 6 -%patch100 -p1 -%patch101 -p1 -%endif - -%if 0%{?with_python3} -rm -rf %{py3dir} -cp -a . %{py3dir} -%endif # with_python3 - -%build -%{__python} setup.py build - -%if 0%{?with_python3} -pushd %{py3dir} -%{__python3} setup.py build -popd -%endif # with_python3 - -%install -rm -rf %{buildroot} -%{__python} setup.py install --skip-build --root %{buildroot} - -# dummyserver is part of the unittest framework -rm -rf %{buildroot}%{python_sitelib}/dummyserver - -%if 0%{?with_python3} -pushd %{py3dir} -%{__python3} setup.py install --skip-build --root %{buildroot} - -# dummyserver is part of the unittest framework -rm -rf %{buildroot}%{python3_sitelib}/dummyserver -popd -%endif # with_python3 - -%check -nosetests - -%if 0%{?with_python3} -pushd %{py3dir} -nosetests-%{python3_version} -popd -%endif # with_python3 - -%files -%doc CHANGES.rst LICENSE.txt README.rst CONTRIBUTORS.txt -# For noarch packages: sitelib -%{python_sitelib}/* - -%if 0%{?with_python3} -%files -n python3-%{srcname} -%doc LICENSE.txt -# For noarch packages: sitelib -%{python3_sitelib}/* -%endif # with_python3 - -%changelog -* Mon Oct 28 2013 Ralph Bean - 1.5-7 -- Update patch to find ca_certs in the correct place. - -* Tue Jun 11 2013 Toshio Kuratomi - 1.5-6 -- Fix Requires of python-ordereddict to only apply to RHEL - -* Fri Mar 1 2013 Toshio Kuratomi - 1.5-5 -- Unbundling finished! - -* Fri Mar 01 2013 Ralph Bean - 1.5-4 -- Upstream patch to fix Accept header when behind a proxy. -- Reorganize patch numbers to more clearly distinguish them. - -* Wed Feb 27 2013 Ralph Bean - 1.5-3 -- Renamed patches to python-urllib3-* -- Fixed ssl check patch to use the correct cert path for Fedora. -- Included dependency on ca-certificates -- Cosmetic indentation changes to the .spec file. - -* Tue Feb 5 2013 Toshio Kuratomi - 1.5-2 -- python3-tornado BR and run all unittests on python3 - -* Mon Feb 04 2013 Toshio Kuratomi 1.5-1 -- Initial fedora build. - diff --git a/sources b/sources deleted file mode 100644 index 24f2a19..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -3ee4b375a095bb6098f1ed75f8058e48 urllib3-1.5.tar.gz From a29737d1ddcf59644f04e5d0e27af2508b1cfb90 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Mon, 16 Mar 2015 10:32:51 -0400 Subject: [PATCH 3/4] Revert "Moving into rhel-6.7" This reverts commit e6e52f508ef4a9620034b1a886abed23b3ec5c39. Turns out that the move into rhel-6.7 wasn't coordinated correctly. This package will likely still end up in rhel-6.7 but this retirement was premature. --- .gitignore | 1 + dead.package | 1 - python-urllib3-accept-header-for-proxy.patch | 28 +++ ...on-urllib3-default-ssl-cert-validate.patch | 20 +++ python-urllib3-old-nose-compat.patch | 10 ++ python-urllib3-py2.6-compat.patch | 89 ++++++++++ python-urllib3-unbundle.patch | 162 +++++++++++++++++ python-urllib3.spec | 166 ++++++++++++++++++ sources | 1 + 9 files changed, 477 insertions(+), 1 deletion(-) create mode 100644 .gitignore delete mode 100644 dead.package create mode 100644 python-urllib3-accept-header-for-proxy.patch create mode 100644 python-urllib3-default-ssl-cert-validate.patch create mode 100644 python-urllib3-old-nose-compat.patch create mode 100644 python-urllib3-py2.6-compat.patch create mode 100644 python-urllib3-unbundle.patch create mode 100644 python-urllib3.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..052920f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/urllib3-1.5.tar.gz diff --git a/dead.package b/dead.package deleted file mode 100644 index a956d36..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Moving into rhel-6.7 diff --git a/python-urllib3-accept-header-for-proxy.patch b/python-urllib3-accept-header-for-proxy.patch new file mode 100644 index 0000000..8d89f27 --- /dev/null +++ b/python-urllib3-accept-header-for-proxy.patch @@ -0,0 +1,28 @@ +From ea36acfc8a997a19ba1ead58de0d1f01e9eb540f Mon Sep 17 00:00:00 2001 +From: kevin +Date: Thu, 30 Aug 2012 00:14:12 -0400 +Subject: [PATCH 1/4] Fix overwritten Accept header when proxy is used + +When a request specifies both an Accept header and a proxy server, the +Accept header value is overwritten. +--- + urllib3/poolmanager.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/urllib3/poolmanager.py b/urllib3/poolmanager.py +index 8f5b54c..7d7d6e4 100644 +--- a/urllib3/poolmanager.py ++++ b/urllib3/poolmanager.py +@@ -141,7 +141,8 @@ def _set_proxy_headers(self, headers=None): + headers = headers or {} + + # Same headers are curl passes for --proxy1.0 +- headers['Accept'] = '*/*' ++ if 'Accept' not in headers: ++ headers['Accept'] = '*/*' + headers['Proxy-Connection'] = 'Keep-Alive' + + return headers +-- +1.7.10 + diff --git a/python-urllib3-default-ssl-cert-validate.patch b/python-urllib3-default-ssl-cert-validate.patch new file mode 100644 index 0000000..38eea0f --- /dev/null +++ b/python-urllib3-default-ssl-cert-validate.patch @@ -0,0 +1,20 @@ +Author: Jamie Strandboge +Description: require SSL certificate validation by default by using + CERT_REQUIRED and using the system /etc/ssl/certs/ca-certificates.crt +Bug-Ubuntu: https://launchpad.net/bugs/1047054 +Modified for Fedora by Ralph Bean +Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=855320 + +Index: urllib3-1.5/urllib3/connectionpool.py +=================================================================== +--- urllib3-1.5.orig/urllib3/connectionpool.py ++++ urllib3-1.5/urllib3/connectionpool.py +@@ -504,7 +504,7 @@ class HTTPSConnectionPool(HTTPConnection + strict=False, timeout=None, maxsize=1, + block=False, headers=None, + key_file=None, cert_file=None, +- cert_reqs='CERT_NONE', ca_certs=None): ++ cert_reqs='CERT_REQUIRED', ca_certs='/etc/ssl/certs/ca-bundle.crt'): + + super(HTTPSConnectionPool, self).__init__(host, port, + strict, timeout, maxsize, diff --git a/python-urllib3-old-nose-compat.patch b/python-urllib3-old-nose-compat.patch new file mode 100644 index 0000000..e76dda5 --- /dev/null +++ b/python-urllib3-old-nose-compat.patch @@ -0,0 +1,10 @@ +Index: urllib3-1.5/setup.cfg +=================================================================== +--- urllib3-1.5.orig/setup.cfg ++++ urllib3-1.5/setup.cfg +@@ -1,5 +1,4 @@ + [nosetests] +-logging-clear-handlers = true + with-coverage = true + cover-package = urllib3 + diff --git a/python-urllib3-py2.6-compat.patch b/python-urllib3-py2.6-compat.patch new file mode 100644 index 0000000..afcb355 --- /dev/null +++ b/python-urllib3-py2.6-compat.patch @@ -0,0 +1,89 @@ +Index: urllib3-1.5/test/test_collections.py +=================================================================== +--- urllib3-1.5.orig/test/test_collections.py ++++ urllib3-1.5/test/test_collections.py +@@ -122,9 +122,11 @@ class TestLRUContainer(unittest.TestCase + def test_iter(self): + d = Container() + +- with self.assertRaises(NotImplementedError): ++ def to_test(): + for i in d: + self.fail("Iteration shouldn't be implemented.") + ++ self.assertRaises(NotImplementedError, to_test) ++ + if __name__ == '__main__': + unittest.main() +Index: urllib3-1.5/test/test_connectionpool.py +=================================================================== +--- urllib3-1.5.orig/test/test_connectionpool.py ++++ urllib3-1.5/test/test_connectionpool.py +@@ -98,8 +98,7 @@ class TestConnectionPool(unittest.TestCa + + def _test(exception, expect): + pool._make_request = lambda *args, **kwargs: _raise(exception) +- with self.assertRaises(expect): +- pool.request('GET', '/') ++ self.assertRaises(expect, pool.request, 'GET', '/') + + self.assertEqual(pool.pool.qsize(), POOL_SIZE) + +@@ -114,15 +113,13 @@ class TestConnectionPool(unittest.TestCa + # MaxRetryError, not EmptyPoolError + # See: https://github.com/shazow/urllib3/issues/76 + pool._make_request = lambda *args, **kwargs: _raise(HTTPException) +- with self.assertRaises(MaxRetryError): +- pool.request('GET', '/', retries=1, pool_timeout=0.01) ++ self.assertRaises(MaxRetryError, pool.request, 'GET', '/', retries=1, pool_timeout=0.01) + self.assertEqual(pool.pool.qsize(), POOL_SIZE) + + def test_assert_same_host(self): + c = connection_from_url('http://google.com:80') + +- with self.assertRaises(HostChangedError): +- c.request('GET', 'http://yahoo.com:80', assert_same_host=True) ++ self.assertRaises(HostChangedError, c.request, 'GET', 'http://yahoo.com:80', assert_same_host=True) + + def test_pool_close(self): + pool = connection_from_url('http://google.com:80') +@@ -139,16 +136,13 @@ class TestConnectionPool(unittest.TestCa + pool.close() + self.assertEqual(pool.pool, None) + +- with self.assertRaises(ClosedPoolError): +- pool._get_conn() ++ self.assertRaises(ClosedPoolError, pool._get_conn) + + pool._put_conn(conn3) + +- with self.assertRaises(ClosedPoolError): +- pool._get_conn() ++ self.assertRaises(ClosedPoolError, pool._get_conn) + +- with self.assertRaises(Empty): +- old_pool_queue.get(block=False) ++ self.assertRaises(Empty, old_pool_queue.get, block=False) + + + if __name__ == '__main__': +Index: urllib3-1.5/test/test_poolmanager.py +=================================================================== +--- urllib3-1.5.orig/test/test_poolmanager.py ++++ urllib3-1.5/test/test_poolmanager.py +@@ -54,13 +54,11 @@ class TestPoolManager(unittest.TestCase) + p.clear() + self.assertEqual(len(p.pools), 0) + +- with self.assertRaises(ClosedPoolError): +- conn_pool._get_conn() ++ self.assertRaises(ClosedPoolError, conn_pool._get_conn) + + conn_pool._put_conn(conn) + +- with self.assertRaises(ClosedPoolError): +- conn_pool._get_conn() ++ self.assertRaises(ClosedPoolError, conn_pool._get_conn) + + self.assertEqual(len(p.pools), 0) + diff --git a/python-urllib3-unbundle.patch b/python-urllib3-unbundle.patch new file mode 100644 index 0000000..1b5dd64 --- /dev/null +++ b/python-urllib3-unbundle.patch @@ -0,0 +1,162 @@ +Index: urllib3-1.5/urllib3/_collections.py +=================================================================== +--- urllib3-1.5.orig/urllib3/_collections.py ++++ urllib3-1.5/urllib3/_collections.py +@@ -10,7 +10,10 @@ from threading import Lock + try: # Python 2.7+ + from collections import OrderedDict + except ImportError: +- from .packages.ordered_dict import OrderedDict ++ try: # backport package ++ from ordereddict import OrderedDict ++ except ImportError: ++ from .packages.ordered_dict import OrderedDict + + + __all__ = ['RecentlyUsedContainer'] +Index: urllib3-1.5/urllib3/connectionpool.py +=================================================================== +--- urllib3-1.5.orig/urllib3/connectionpool.py ++++ urllib3-1.5/urllib3/connectionpool.py +@@ -51,8 +51,20 @@ from .exceptions import ( + TimeoutError, + ) + +-from .packages.ssl_match_hostname import match_hostname, CertificateError +-from .packages import six ++try: ++ # python3.2+ ++ from ssl import match_hostname, CertificateError ++except ImportError: ++ try: ++ # Older python where the backport from pypi is installed ++ from backports.ssl_match_hostname import match_hostname, CertificateError ++ except ImportError: ++ # Other older python we use our bundled copy ++ from .packages.ssl_match_hostname import match_hostname, CertificateError ++try: ++ import six ++except ImportError: ++ from .packages import six + + + xrange = six.moves.xrange +Index: urllib3-1.5/urllib3/filepost.py +=================================================================== +--- urllib3-1.5.orig/urllib3/filepost.py ++++ urllib3-1.5/urllib3/filepost.py +@@ -10,8 +10,12 @@ import mimetypes + from uuid import uuid4 + from io import BytesIO + +-from .packages import six +-from .packages.six import b ++try: ++ import six ++ from six import b ++except ImportError: ++ from .packages import six ++ from .packages.six import b + + writer = codecs.lookup('utf-8')[3] + +Index: urllib3-1.5/urllib3/response.py +=================================================================== +--- urllib3-1.5.orig/urllib3/response.py ++++ urllib3-1.5/urllib3/response.py +@@ -11,7 +11,10 @@ import zlib + from io import BytesIO + + from .exceptions import DecodeError +-from .packages.six import string_types as basestring ++try: ++ from six import string_types as basestring ++except ImportError: ++ from .packages.six import string_types as basestring + + + log = logging.getLogger(__name__) +Index: urllib3-1.5/urllib3/util.py +=================================================================== +--- urllib3-1.5.orig/urllib3/util.py ++++ urllib3-1.5/urllib3/util.py +@@ -18,7 +18,10 @@ except ImportError: # `poll` doesn't exi + except ImportError: # `select` doesn't exist on AppEngine. + select = False + +-from .packages import six ++try: ++ import six ++except ImporError: ++ from .packages import six + from .exceptions import LocationParseError + + +Index: urllib3-1.5/test/test_collections.py +=================================================================== +--- urllib3-1.5.orig/test/test_collections.py ++++ urllib3-1.5/test/test_collections.py +@@ -1,7 +1,10 @@ + import unittest + + from urllib3._collections import RecentlyUsedContainer as Container +-from urllib3.packages import six ++try: ++ import six ++except ImportError: ++ from urllib3.packages import six + xrange = six.moves.xrange + + +Index: urllib3-1.5/test/test_connectionpool.py +=================================================================== +--- urllib3-1.5.orig/test/test_connectionpool.py ++++ urllib3-1.5/test/test_connectionpool.py +@@ -1,7 +1,16 @@ + import unittest + + from urllib3.connectionpool import connection_from_url, HTTPConnectionPool +-from urllib3.packages.ssl_match_hostname import CertificateError ++try: ++ # python3.2+ ++ from ssl import CertificateError ++except ImportError: ++ try: ++ # Older python where the backport from pypi is installed ++ from backports.ssl_match_hostname import CertificateError ++ except ImportError: ++ # Other older python we use our bundled copy ++ from urllib3.packages.ssl_match_hostname import CertificateError + from urllib3.exceptions import ( + ClosedPoolError, + EmptyPoolError, +Index: urllib3-1.5/test/test_filepost.py +=================================================================== +--- urllib3-1.5.orig/test/test_filepost.py ++++ urllib3-1.5/test/test_filepost.py +@@ -1,7 +1,10 @@ + import unittest + + from urllib3.filepost import encode_multipart_formdata, iter_fields +-from urllib3.packages.six import b, u ++try: ++ from six import b, u ++except ImportError: ++ from urllib3.packages.six import b, u + + + BOUNDARY = '!! test boundary !!' +Index: urllib3-1.5/setup.py +=================================================================== +--- urllib3-1.5.orig/setup.py ++++ urllib3-1.5/setup.py +@@ -44,8 +44,7 @@ setup(name='urllib3', + author_email='andrey.petrov@shazow.net', + url='http://urllib3.readthedocs.org/', + license='MIT', +- packages=['urllib3', 'dummyserver', 'urllib3.packages', +- 'urllib3.packages.ssl_match_hostname', ++ packages=['urllib3', 'dummyserver', 'urllib3', + ], + requires=requirements, + tests_require=tests_requirements, diff --git a/python-urllib3.spec b/python-urllib3.spec new file mode 100644 index 0000000..eef1de7 --- /dev/null +++ b/python-urllib3.spec @@ -0,0 +1,166 @@ +%if 0%{?fedora} +%global with_python3 1 +%else +%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")} +%endif + +%global srcname urllib3 + +Name: python-%{srcname} +Version: 1.5 +Release: 7%{?dist} +Summary: Python HTTP library with thread-safe connection pooling and file post + +License: MIT +URL: http://urllib3.readthedocs.org/ +Source0: http://pypi.python.org/packages/source/u/%{srcname}/%{srcname}-%{version}.tar.gz + +# Patch to change default behaviour to check SSL certs for validity +# https://bugzilla.redhat.com/show_bug.cgi?id=855320 +Patch0: python-urllib3-default-ssl-cert-validate.patch + +### TODO: Send this to upstream urllib3 +# make all imports of things in packages try system copies first +Patch1: python-urllib3-unbundle.patch + +# Fix accept header when behind a proxy +#https://github.com/shazow/urllib3/pull/93 +#https://github.com/shazow/urllib3/pull/93.patch +Patch2: python-urllib3-accept-header-for-proxy.patch + +# Remove logging-clear-handlers from setup.cfg because it's not available in RHEL6's nose +Patch100: python-urllib3-old-nose-compat.patch +### TODO: Send this upstream +# Compatibility with python-2.6's unittest +Patch101: python-urllib3-py2.6-compat.patch + +BuildArch: noarch + +Requires: ca-certificates +Requires: python-six + +Requires: python-backports-ssl_match_hostname +%if 0%{?rhel} && 0%{?rhel} <= 6 +BuildRequires: python-ordereddict +Requires: python-ordereddict +%endif + +BuildRequires: python2-devel +# For unittests +BuildRequires: python-nose +BuildRequires: python-six +BuildRequires: python-tornado +BuildRequires: python-backports-ssl_match_hostname + +%if 0%{?with_python3} +BuildRequires: python3-devel +# For unittests +BuildRequires: python3-nose +BuildRequires: python3-six +BuildRequires: python3-tornado +%endif # with_python3 + +%description +Python HTTP module with connection pooling and file POST abilities. + +%if 0%{?with_python3} +%package -n python3-%{srcname} +Requires: ca-certificates +Requires: python3-six +# Note: Will not run with python3 < 3.2 (unless python3-backports-ssl_match_hostname is created) +Summary: Python3 HTTP library with thread-safe connection pooling and file post +%description -n python3-%{srcname} +Python3 HTTP module with connection pooling and file POST abilities. +%endif # with_python3 + + +%prep +%setup -q -n %{srcname}-%{version} + +rm -rf urllib3/packages/ + +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%if 0%{?rhel} && 0%{?rhel} <= 6 +%patch100 -p1 +%patch101 -p1 +%endif + +%if 0%{?with_python3} +rm -rf %{py3dir} +cp -a . %{py3dir} +%endif # with_python3 + +%build +%{__python} setup.py build + +%if 0%{?with_python3} +pushd %{py3dir} +%{__python3} setup.py build +popd +%endif # with_python3 + +%install +rm -rf %{buildroot} +%{__python} setup.py install --skip-build --root %{buildroot} + +# dummyserver is part of the unittest framework +rm -rf %{buildroot}%{python_sitelib}/dummyserver + +%if 0%{?with_python3} +pushd %{py3dir} +%{__python3} setup.py install --skip-build --root %{buildroot} + +# dummyserver is part of the unittest framework +rm -rf %{buildroot}%{python3_sitelib}/dummyserver +popd +%endif # with_python3 + +%check +nosetests + +%if 0%{?with_python3} +pushd %{py3dir} +nosetests-%{python3_version} +popd +%endif # with_python3 + +%files +%doc CHANGES.rst LICENSE.txt README.rst CONTRIBUTORS.txt +# For noarch packages: sitelib +%{python_sitelib}/* + +%if 0%{?with_python3} +%files -n python3-%{srcname} +%doc LICENSE.txt +# For noarch packages: sitelib +%{python3_sitelib}/* +%endif # with_python3 + +%changelog +* Mon Oct 28 2013 Ralph Bean - 1.5-7 +- Update patch to find ca_certs in the correct place. + +* Tue Jun 11 2013 Toshio Kuratomi - 1.5-6 +- Fix Requires of python-ordereddict to only apply to RHEL + +* Fri Mar 1 2013 Toshio Kuratomi - 1.5-5 +- Unbundling finished! + +* Fri Mar 01 2013 Ralph Bean - 1.5-4 +- Upstream patch to fix Accept header when behind a proxy. +- Reorganize patch numbers to more clearly distinguish them. + +* Wed Feb 27 2013 Ralph Bean - 1.5-3 +- Renamed patches to python-urllib3-* +- Fixed ssl check patch to use the correct cert path for Fedora. +- Included dependency on ca-certificates +- Cosmetic indentation changes to the .spec file. + +* Tue Feb 5 2013 Toshio Kuratomi - 1.5-2 +- python3-tornado BR and run all unittests on python3 + +* Mon Feb 04 2013 Toshio Kuratomi 1.5-1 +- Initial fedora build. + diff --git a/sources b/sources new file mode 100644 index 0000000..24f2a19 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +3ee4b375a095bb6098f1ed75f8058e48 urllib3-1.5.tar.gz From 403662788efac1d61d32d84e62ebb9405fd5d399 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Tue, 15 Sep 2015 16:14:18 -0400 Subject: [PATCH 4/4] Included in rhel-6.7 https://bugzilla.redhat.com/show_bug.cgi?id=1250004 --- .gitignore | 1 - dead.package | 1 + python-urllib3-accept-header-for-proxy.patch | 28 --- ...on-urllib3-default-ssl-cert-validate.patch | 20 --- python-urllib3-old-nose-compat.patch | 10 -- python-urllib3-py2.6-compat.patch | 89 ---------- python-urllib3-unbundle.patch | 162 ----------------- python-urllib3.spec | 166 ------------------ sources | 1 - 9 files changed, 1 insertion(+), 477 deletions(-) delete mode 100644 .gitignore create mode 100644 dead.package delete mode 100644 python-urllib3-accept-header-for-proxy.patch delete mode 100644 python-urllib3-default-ssl-cert-validate.patch delete mode 100644 python-urllib3-old-nose-compat.patch delete mode 100644 python-urllib3-py2.6-compat.patch delete mode 100644 python-urllib3-unbundle.patch delete mode 100644 python-urllib3.spec delete mode 100644 sources diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 052920f..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/urllib3-1.5.tar.gz diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..797b093 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Included in rhel-6.7 https://bugzilla.redhat.com/show_bug.cgi?id=1250004 diff --git a/python-urllib3-accept-header-for-proxy.patch b/python-urllib3-accept-header-for-proxy.patch deleted file mode 100644 index 8d89f27..0000000 --- a/python-urllib3-accept-header-for-proxy.patch +++ /dev/null @@ -1,28 +0,0 @@ -From ea36acfc8a997a19ba1ead58de0d1f01e9eb540f Mon Sep 17 00:00:00 2001 -From: kevin -Date: Thu, 30 Aug 2012 00:14:12 -0400 -Subject: [PATCH 1/4] Fix overwritten Accept header when proxy is used - -When a request specifies both an Accept header and a proxy server, the -Accept header value is overwritten. ---- - urllib3/poolmanager.py | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/urllib3/poolmanager.py b/urllib3/poolmanager.py -index 8f5b54c..7d7d6e4 100644 ---- a/urllib3/poolmanager.py -+++ b/urllib3/poolmanager.py -@@ -141,7 +141,8 @@ def _set_proxy_headers(self, headers=None): - headers = headers or {} - - # Same headers are curl passes for --proxy1.0 -- headers['Accept'] = '*/*' -+ if 'Accept' not in headers: -+ headers['Accept'] = '*/*' - headers['Proxy-Connection'] = 'Keep-Alive' - - return headers --- -1.7.10 - diff --git a/python-urllib3-default-ssl-cert-validate.patch b/python-urllib3-default-ssl-cert-validate.patch deleted file mode 100644 index 38eea0f..0000000 --- a/python-urllib3-default-ssl-cert-validate.patch +++ /dev/null @@ -1,20 +0,0 @@ -Author: Jamie Strandboge -Description: require SSL certificate validation by default by using - CERT_REQUIRED and using the system /etc/ssl/certs/ca-certificates.crt -Bug-Ubuntu: https://launchpad.net/bugs/1047054 -Modified for Fedora by Ralph Bean -Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=855320 - -Index: urllib3-1.5/urllib3/connectionpool.py -=================================================================== ---- urllib3-1.5.orig/urllib3/connectionpool.py -+++ urllib3-1.5/urllib3/connectionpool.py -@@ -504,7 +504,7 @@ class HTTPSConnectionPool(HTTPConnection - strict=False, timeout=None, maxsize=1, - block=False, headers=None, - key_file=None, cert_file=None, -- cert_reqs='CERT_NONE', ca_certs=None): -+ cert_reqs='CERT_REQUIRED', ca_certs='/etc/ssl/certs/ca-bundle.crt'): - - super(HTTPSConnectionPool, self).__init__(host, port, - strict, timeout, maxsize, diff --git a/python-urllib3-old-nose-compat.patch b/python-urllib3-old-nose-compat.patch deleted file mode 100644 index e76dda5..0000000 --- a/python-urllib3-old-nose-compat.patch +++ /dev/null @@ -1,10 +0,0 @@ -Index: urllib3-1.5/setup.cfg -=================================================================== ---- urllib3-1.5.orig/setup.cfg -+++ urllib3-1.5/setup.cfg -@@ -1,5 +1,4 @@ - [nosetests] --logging-clear-handlers = true - with-coverage = true - cover-package = urllib3 - diff --git a/python-urllib3-py2.6-compat.patch b/python-urllib3-py2.6-compat.patch deleted file mode 100644 index afcb355..0000000 --- a/python-urllib3-py2.6-compat.patch +++ /dev/null @@ -1,89 +0,0 @@ -Index: urllib3-1.5/test/test_collections.py -=================================================================== ---- urllib3-1.5.orig/test/test_collections.py -+++ urllib3-1.5/test/test_collections.py -@@ -122,9 +122,11 @@ class TestLRUContainer(unittest.TestCase - def test_iter(self): - d = Container() - -- with self.assertRaises(NotImplementedError): -+ def to_test(): - for i in d: - self.fail("Iteration shouldn't be implemented.") - -+ self.assertRaises(NotImplementedError, to_test) -+ - if __name__ == '__main__': - unittest.main() -Index: urllib3-1.5/test/test_connectionpool.py -=================================================================== ---- urllib3-1.5.orig/test/test_connectionpool.py -+++ urllib3-1.5/test/test_connectionpool.py -@@ -98,8 +98,7 @@ class TestConnectionPool(unittest.TestCa - - def _test(exception, expect): - pool._make_request = lambda *args, **kwargs: _raise(exception) -- with self.assertRaises(expect): -- pool.request('GET', '/') -+ self.assertRaises(expect, pool.request, 'GET', '/') - - self.assertEqual(pool.pool.qsize(), POOL_SIZE) - -@@ -114,15 +113,13 @@ class TestConnectionPool(unittest.TestCa - # MaxRetryError, not EmptyPoolError - # See: https://github.com/shazow/urllib3/issues/76 - pool._make_request = lambda *args, **kwargs: _raise(HTTPException) -- with self.assertRaises(MaxRetryError): -- pool.request('GET', '/', retries=1, pool_timeout=0.01) -+ self.assertRaises(MaxRetryError, pool.request, 'GET', '/', retries=1, pool_timeout=0.01) - self.assertEqual(pool.pool.qsize(), POOL_SIZE) - - def test_assert_same_host(self): - c = connection_from_url('http://google.com:80') - -- with self.assertRaises(HostChangedError): -- c.request('GET', 'http://yahoo.com:80', assert_same_host=True) -+ self.assertRaises(HostChangedError, c.request, 'GET', 'http://yahoo.com:80', assert_same_host=True) - - def test_pool_close(self): - pool = connection_from_url('http://google.com:80') -@@ -139,16 +136,13 @@ class TestConnectionPool(unittest.TestCa - pool.close() - self.assertEqual(pool.pool, None) - -- with self.assertRaises(ClosedPoolError): -- pool._get_conn() -+ self.assertRaises(ClosedPoolError, pool._get_conn) - - pool._put_conn(conn3) - -- with self.assertRaises(ClosedPoolError): -- pool._get_conn() -+ self.assertRaises(ClosedPoolError, pool._get_conn) - -- with self.assertRaises(Empty): -- old_pool_queue.get(block=False) -+ self.assertRaises(Empty, old_pool_queue.get, block=False) - - - if __name__ == '__main__': -Index: urllib3-1.5/test/test_poolmanager.py -=================================================================== ---- urllib3-1.5.orig/test/test_poolmanager.py -+++ urllib3-1.5/test/test_poolmanager.py -@@ -54,13 +54,11 @@ class TestPoolManager(unittest.TestCase) - p.clear() - self.assertEqual(len(p.pools), 0) - -- with self.assertRaises(ClosedPoolError): -- conn_pool._get_conn() -+ self.assertRaises(ClosedPoolError, conn_pool._get_conn) - - conn_pool._put_conn(conn) - -- with self.assertRaises(ClosedPoolError): -- conn_pool._get_conn() -+ self.assertRaises(ClosedPoolError, conn_pool._get_conn) - - self.assertEqual(len(p.pools), 0) - diff --git a/python-urllib3-unbundle.patch b/python-urllib3-unbundle.patch deleted file mode 100644 index 1b5dd64..0000000 --- a/python-urllib3-unbundle.patch +++ /dev/null @@ -1,162 +0,0 @@ -Index: urllib3-1.5/urllib3/_collections.py -=================================================================== ---- urllib3-1.5.orig/urllib3/_collections.py -+++ urllib3-1.5/urllib3/_collections.py -@@ -10,7 +10,10 @@ from threading import Lock - try: # Python 2.7+ - from collections import OrderedDict - except ImportError: -- from .packages.ordered_dict import OrderedDict -+ try: # backport package -+ from ordereddict import OrderedDict -+ except ImportError: -+ from .packages.ordered_dict import OrderedDict - - - __all__ = ['RecentlyUsedContainer'] -Index: urllib3-1.5/urllib3/connectionpool.py -=================================================================== ---- urllib3-1.5.orig/urllib3/connectionpool.py -+++ urllib3-1.5/urllib3/connectionpool.py -@@ -51,8 +51,20 @@ from .exceptions import ( - TimeoutError, - ) - --from .packages.ssl_match_hostname import match_hostname, CertificateError --from .packages import six -+try: -+ # python3.2+ -+ from ssl import match_hostname, CertificateError -+except ImportError: -+ try: -+ # Older python where the backport from pypi is installed -+ from backports.ssl_match_hostname import match_hostname, CertificateError -+ except ImportError: -+ # Other older python we use our bundled copy -+ from .packages.ssl_match_hostname import match_hostname, CertificateError -+try: -+ import six -+except ImportError: -+ from .packages import six - - - xrange = six.moves.xrange -Index: urllib3-1.5/urllib3/filepost.py -=================================================================== ---- urllib3-1.5.orig/urllib3/filepost.py -+++ urllib3-1.5/urllib3/filepost.py -@@ -10,8 +10,12 @@ import mimetypes - from uuid import uuid4 - from io import BytesIO - --from .packages import six --from .packages.six import b -+try: -+ import six -+ from six import b -+except ImportError: -+ from .packages import six -+ from .packages.six import b - - writer = codecs.lookup('utf-8')[3] - -Index: urllib3-1.5/urllib3/response.py -=================================================================== ---- urllib3-1.5.orig/urllib3/response.py -+++ urllib3-1.5/urllib3/response.py -@@ -11,7 +11,10 @@ import zlib - from io import BytesIO - - from .exceptions import DecodeError --from .packages.six import string_types as basestring -+try: -+ from six import string_types as basestring -+except ImportError: -+ from .packages.six import string_types as basestring - - - log = logging.getLogger(__name__) -Index: urllib3-1.5/urllib3/util.py -=================================================================== ---- urllib3-1.5.orig/urllib3/util.py -+++ urllib3-1.5/urllib3/util.py -@@ -18,7 +18,10 @@ except ImportError: # `poll` doesn't exi - except ImportError: # `select` doesn't exist on AppEngine. - select = False - --from .packages import six -+try: -+ import six -+except ImporError: -+ from .packages import six - from .exceptions import LocationParseError - - -Index: urllib3-1.5/test/test_collections.py -=================================================================== ---- urllib3-1.5.orig/test/test_collections.py -+++ urllib3-1.5/test/test_collections.py -@@ -1,7 +1,10 @@ - import unittest - - from urllib3._collections import RecentlyUsedContainer as Container --from urllib3.packages import six -+try: -+ import six -+except ImportError: -+ from urllib3.packages import six - xrange = six.moves.xrange - - -Index: urllib3-1.5/test/test_connectionpool.py -=================================================================== ---- urllib3-1.5.orig/test/test_connectionpool.py -+++ urllib3-1.5/test/test_connectionpool.py -@@ -1,7 +1,16 @@ - import unittest - - from urllib3.connectionpool import connection_from_url, HTTPConnectionPool --from urllib3.packages.ssl_match_hostname import CertificateError -+try: -+ # python3.2+ -+ from ssl import CertificateError -+except ImportError: -+ try: -+ # Older python where the backport from pypi is installed -+ from backports.ssl_match_hostname import CertificateError -+ except ImportError: -+ # Other older python we use our bundled copy -+ from urllib3.packages.ssl_match_hostname import CertificateError - from urllib3.exceptions import ( - ClosedPoolError, - EmptyPoolError, -Index: urllib3-1.5/test/test_filepost.py -=================================================================== ---- urllib3-1.5.orig/test/test_filepost.py -+++ urllib3-1.5/test/test_filepost.py -@@ -1,7 +1,10 @@ - import unittest - - from urllib3.filepost import encode_multipart_formdata, iter_fields --from urllib3.packages.six import b, u -+try: -+ from six import b, u -+except ImportError: -+ from urllib3.packages.six import b, u - - - BOUNDARY = '!! test boundary !!' -Index: urllib3-1.5/setup.py -=================================================================== ---- urllib3-1.5.orig/setup.py -+++ urllib3-1.5/setup.py -@@ -44,8 +44,7 @@ setup(name='urllib3', - author_email='andrey.petrov@shazow.net', - url='http://urllib3.readthedocs.org/', - license='MIT', -- packages=['urllib3', 'dummyserver', 'urllib3.packages', -- 'urllib3.packages.ssl_match_hostname', -+ packages=['urllib3', 'dummyserver', 'urllib3', - ], - requires=requirements, - tests_require=tests_requirements, diff --git a/python-urllib3.spec b/python-urllib3.spec deleted file mode 100644 index eef1de7..0000000 --- a/python-urllib3.spec +++ /dev/null @@ -1,166 +0,0 @@ -%if 0%{?fedora} -%global with_python3 1 -%else -%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")} -%endif - -%global srcname urllib3 - -Name: python-%{srcname} -Version: 1.5 -Release: 7%{?dist} -Summary: Python HTTP library with thread-safe connection pooling and file post - -License: MIT -URL: http://urllib3.readthedocs.org/ -Source0: http://pypi.python.org/packages/source/u/%{srcname}/%{srcname}-%{version}.tar.gz - -# Patch to change default behaviour to check SSL certs for validity -# https://bugzilla.redhat.com/show_bug.cgi?id=855320 -Patch0: python-urllib3-default-ssl-cert-validate.patch - -### TODO: Send this to upstream urllib3 -# make all imports of things in packages try system copies first -Patch1: python-urllib3-unbundle.patch - -# Fix accept header when behind a proxy -#https://github.com/shazow/urllib3/pull/93 -#https://github.com/shazow/urllib3/pull/93.patch -Patch2: python-urllib3-accept-header-for-proxy.patch - -# Remove logging-clear-handlers from setup.cfg because it's not available in RHEL6's nose -Patch100: python-urllib3-old-nose-compat.patch -### TODO: Send this upstream -# Compatibility with python-2.6's unittest -Patch101: python-urllib3-py2.6-compat.patch - -BuildArch: noarch - -Requires: ca-certificates -Requires: python-six - -Requires: python-backports-ssl_match_hostname -%if 0%{?rhel} && 0%{?rhel} <= 6 -BuildRequires: python-ordereddict -Requires: python-ordereddict -%endif - -BuildRequires: python2-devel -# For unittests -BuildRequires: python-nose -BuildRequires: python-six -BuildRequires: python-tornado -BuildRequires: python-backports-ssl_match_hostname - -%if 0%{?with_python3} -BuildRequires: python3-devel -# For unittests -BuildRequires: python3-nose -BuildRequires: python3-six -BuildRequires: python3-tornado -%endif # with_python3 - -%description -Python HTTP module with connection pooling and file POST abilities. - -%if 0%{?with_python3} -%package -n python3-%{srcname} -Requires: ca-certificates -Requires: python3-six -# Note: Will not run with python3 < 3.2 (unless python3-backports-ssl_match_hostname is created) -Summary: Python3 HTTP library with thread-safe connection pooling and file post -%description -n python3-%{srcname} -Python3 HTTP module with connection pooling and file POST abilities. -%endif # with_python3 - - -%prep -%setup -q -n %{srcname}-%{version} - -rm -rf urllib3/packages/ - -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%if 0%{?rhel} && 0%{?rhel} <= 6 -%patch100 -p1 -%patch101 -p1 -%endif - -%if 0%{?with_python3} -rm -rf %{py3dir} -cp -a . %{py3dir} -%endif # with_python3 - -%build -%{__python} setup.py build - -%if 0%{?with_python3} -pushd %{py3dir} -%{__python3} setup.py build -popd -%endif # with_python3 - -%install -rm -rf %{buildroot} -%{__python} setup.py install --skip-build --root %{buildroot} - -# dummyserver is part of the unittest framework -rm -rf %{buildroot}%{python_sitelib}/dummyserver - -%if 0%{?with_python3} -pushd %{py3dir} -%{__python3} setup.py install --skip-build --root %{buildroot} - -# dummyserver is part of the unittest framework -rm -rf %{buildroot}%{python3_sitelib}/dummyserver -popd -%endif # with_python3 - -%check -nosetests - -%if 0%{?with_python3} -pushd %{py3dir} -nosetests-%{python3_version} -popd -%endif # with_python3 - -%files -%doc CHANGES.rst LICENSE.txt README.rst CONTRIBUTORS.txt -# For noarch packages: sitelib -%{python_sitelib}/* - -%if 0%{?with_python3} -%files -n python3-%{srcname} -%doc LICENSE.txt -# For noarch packages: sitelib -%{python3_sitelib}/* -%endif # with_python3 - -%changelog -* Mon Oct 28 2013 Ralph Bean - 1.5-7 -- Update patch to find ca_certs in the correct place. - -* Tue Jun 11 2013 Toshio Kuratomi - 1.5-6 -- Fix Requires of python-ordereddict to only apply to RHEL - -* Fri Mar 1 2013 Toshio Kuratomi - 1.5-5 -- Unbundling finished! - -* Fri Mar 01 2013 Ralph Bean - 1.5-4 -- Upstream patch to fix Accept header when behind a proxy. -- Reorganize patch numbers to more clearly distinguish them. - -* Wed Feb 27 2013 Ralph Bean - 1.5-3 -- Renamed patches to python-urllib3-* -- Fixed ssl check patch to use the correct cert path for Fedora. -- Included dependency on ca-certificates -- Cosmetic indentation changes to the .spec file. - -* Tue Feb 5 2013 Toshio Kuratomi - 1.5-2 -- python3-tornado BR and run all unittests on python3 - -* Mon Feb 04 2013 Toshio Kuratomi 1.5-1 -- Initial fedora build. - diff --git a/sources b/sources deleted file mode 100644 index 24f2a19..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -3ee4b375a095bb6098f1ed75f8058e48 urllib3-1.5.tar.gz